安全矩阵

 找回密码
 立即注册
搜索
查看: 2888|回复: 0

waf绕过方式小结

[复制链接]

221

主题

233

帖子

792

积分

高级会员

Rank: 4

积分
792
发表于 2021-8-29 16:00:25 | 显示全部楼层 |阅读模式
waf绕过方式小结 (qq.com)
waf绕过方式小结STR1AM [url=]HACK之道[/url] 3天前
收录于话题#waf绕过2个
waf不单单局限于绕过waf过滤的字符以突破waf,也可以通过waf缺陷,解析机制等方式突破waf。文章参考2019 Kcon大会上pyn3rd的议题《云时代的waf突破》
0x01:脏数据绕过
即传入一段长数据使waf失效,从而实现绕过waf。文章提到某些waf处理POST的数据时,只会检测开头的8K,后面选择全部放过

0x02:并发请求绕过
对请求进行并发,攻击请求会被负载均衡调度到不同节点,导致某些请求绕过了waf的拦截

0x03:HTTP参数污染
由于waf与后端对相同HTTP参数处理方式不同,导致waf被绕过


如上图所示,在php中会处理最后一个数据,也就是这里的id=2,通过在最后一个参数中传入注入等语句绕过waf的过滤
0x04:数据格式解析绕过


除了图中提到的方式外,一些其他方式也可能绕过waf,例如将传入json数据,将其修改为HTTP请求,或者修改content-type等方式(当然是在应用能够正常解析的前提下)。
0x05:分块传输绕过
这个应该是最近听的比较多而且比较有效的一种绕过方式
在HTTP请求头加入 Transfer-Encoding: chunked,同时对数据进行分块传输
例如注入语句为id=1 and 1=1,将请求修改为分块传输的方式

需要注意的是0代表编码结束,在0后面需要加两个空行代表分块传入的结束
为此有师傅编写了专门的插件
https://github.com/c0ny1/chunked-coding-converter
0x06:利用容器特性绕过
在IIS+ASP的环境中,会忽略%,以此特性来绕过waf

在waf看来传入的数据为http://www.test.com/test.asp?id=1 union all se%lect 1,2,3,4 fro%m adm%in
由于检测的关键词被隔断导致不会被拦截,而且传入后端服务器的数据为http://www.test.com/test.asp?id=1 union all select 1,2,3,4 from admin。从而绕过了waf
0x07:编码绕过
对请求数据进行编码,例如url编码,Unicode编码等,如果waf对数据不能有效的解码,而应用后端能够正常解码,就可以绕过waf
例如最常见的url编码,对数据进行二次url编码,waf进行一次解码并不能解析到有效的数据,而后端在进行解码时传入的为有效的恶意数据

0x08:ip伪造
由于白名单机制,waf可能会对某些ip发的请求不进行拦截,通过ip伪造绕过waf的限制
常见的伪造IP请求头
X-Forwarded-For:127.0.0.1
X-Forwarded-Host:127.0.0.1
X-Client-IP:127.0.0.1
X-remote-IP:127.0.0.1
X-remote-addr:127.0.0.1
True-Client-IP:127.0.0.1
X-Client-IP:127.0.0.1
Client-IP:127.0.0.1
X-Real-IP:127.0.0.1
0x09:HTTP请求方式绕过
来自一个朋友的真实环境中,POST GET传数据都会被waf拦截,将请求方式修改为OPTIONS,HEAD等成功绕过了waf(当然是在应用允许使用这些请求方式的前提下)

-----END-----

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-29 18:29 , Processed in 0.013088 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表