目录
.漏洞利用
在漏洞利用中,主要就是以下几个方面需要绕过WAF
- SQL注入
- 文件上传
- XSS跨站
- 文件包含
- RCE执行
下面就写一些思路吧。
1.SQL注入
-
敏感字符绕过
如 union,ordery by 等相关关键字,使用/**/ (注释)绕过 WAF
对敏感字段的查询如 database 后使用database/**/
2.联合绕过
%23 代表 #
%0A 代表一个换行符
union %23%0Aselect 1,2,3;%23
如:
id=1%20union %23%0Aselect 1,2,3;%23
id=1/**&id=-1%20 union%20 select%201,2,3%23*/
id=1%20union/*!44509select*/%201,2,3 (大于 4.4509 版
本运行)
注:/!x/ 代表当 mysql 数据库版本大于 x 时, mysql 不再当作注
释,从而将其运行,这是 mysql 的特性
Sqlmap工具绕过
1.绕过指纹识别
需要伪装 UA(--user-agent="Mozilla/5.0 (compatible; Baiduspider/2.0;
+http://www.baidu.com/search/spider.html)"或者--random-agent),
或者修改 sqlmap 下自带的 sqlmap.conf 文件下的 agent 也可达到效果
2.绕过敏感字段识别
用到自带模块(–tamper=rdog.py )
3.绕过cc防护
上代理池(–proxy=http:/IP:port)
4.宝塔基础上绕过
BTWAF 会对/*关键字进行拦截,所以在上述的基础上想绕过 BT 就需要使用截断技术,故在每个/*前面加上%00 即可绕过了
截断条件
1. PHP 版本小于 5.3.4
2. php.ini 中的 magic_quotes_gpc 设置为 Off
magic_quotes_gpc 函数在 php 中的作用是判断解析用户提示的数据,如包括有:post、get、cookie 过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误
2.文件上传
1.数据溢出
WAF 一般检测上传参数的位置,所以在上传参数构造垃圾数据使其溢出
垃圾数据写入的位置:最后以分号结尾
2 符号变异
就是在抓包中修改 filename 的值,将 filename 中的一个双引号去除 使得 waf 无法获取双引号的内容,从而无法检测出执行文本,达到绕过的效果。利用的是双引号里的是一个字符串,但是当我们把一个双引号去除后,就会变成了一个变量或其它值,从而不再变成一个字符串被 WAF 所检测到
3.分号绕过
由于分号代表一个语句的结束,所以当我们使用分号后,WAF 检测到的是 x.jpg 文件名,对于后面的文件被忽略了也就没检测到,使得绕过了waf
4.换行绕过
利用 WAF 读取换行时为\n ,而数据包却能完整的去读出来换行,例如:WAF 读取到的为 filename 为 x.\np\nh\np 从而 WAF 无法获取到 php 的执行文件达到绕过效果
5.重复数据
-
借助原有数据绕过
利用 content-Disposition:* from-data; name=”upload_file”; 的值带入 filename 中, 从而使得WAF 在检测时直接检测到 filename 为 content-Disposition:* from-data; name=”upload_file”; 从而作为白名单而绕过了 WAF 而服务器接收到的确实 x.php
-
利用白名单绕过
重复构造 filename=”.jpg” 最后在以 filename=”.php”结尾从而利用递归的问题, 绕过了WAF,类似前面的文件上传后端部分的双写绕过
3.XSS绕过
1. 标签语法替代
2. 特殊符号干扰
3. 提交方式更改
4. 垃圾数据溢出
5. 加密解密算法
6. 结合其它漏洞绕过
XSStrike 工具绕过
使用延时或者代理池绕过 CC 即可
--timeout 或者--proxy
4.RCE-WAF绕过
1.加密解密绕过
可逆 base64,url 编码
不可逆 md5
2 关键字绕过
如 phpinfo(); 可以替换成如下写法:
$y=str_replace('x','','pxhpxinxfo()');assert($y);
3.提交方法
利用变量覆盖加上请求方法达到该效果,如本来是 POST 方法,修改后变成 GET 方法从而达到绕过 WAF
$a=$_GET['x'];$$a=$_GET['y'];$b($_POST['z']);