WAF绕过
WAF
在实际的渗透测试过程中,经常会碰到网站存在WAF的情况。网站存在WAF,意味着我们不能使用安全工具对网站进行测试,因为一旦触碰了WAF的规则,轻则丢弃报文,重则拉黑IP。所以,我们需要手动进行WAF的绕过,而绕过WAF前肯定需要对WAF 的工作原理有一定的理解。
首先,WAF分为非嵌入型WAF和嵌入型WAF,非嵌入型WAF指的是硬件型WAF、云WAF、软件型WAF之类的;而嵌入型WAF指的是网站内置的WAF。非嵌入型WAF对Web流量的解析完全是靠自身的,而嵌入型WAF拿到的Web数据是已经被解析加工好的。所以非嵌入型的受攻击机面还涉及到其他层面,而嵌入型WAF从Web容器模块型WAF、代码层WAF往下走,其对抗畸形报文、扫操作绕过的能力越来越强。当然,在部署维护成本方面,也是越高的。
waf绕过
从WAF工作的过程我们可以看到,要想绕过WAF,我们只有在 WAF解析HTTP请求 或 WAF匹配规则 两个地方进行绕过。因为第三、四步是WAF匹配到攻击之后的操作,这时候WAF已经检测到攻击了。
域名转换为ip
有些WAF设置的是针对域名的防护,在有些时候,我们可以尝试将域名改成ip地址有可以绕过WAF的防护。
WAF解析HTTP请求阶段绕过
要想在WAF解析HTTP请求阶段绕过,首先,我们得了解HTTP报文的各个字段的含义和服务器对HTTP报文各字段的解析。传送门:一次HTTP请求的过程
分块编码(Transfer-Encoding)绕过WAF
有关于HTTP数据的分块编码:HTTP协议之分段传输与分块编码
这种绕过方法利用的是WAF在解析HTTP协议的过程,既然WAF连我们的攻击代码都没有解析完全,那么第二步的正则匹配也就匹配不到我们的攻击代码了,自然就可以绕过了。
相关文章:在HTTP协议层面绕过WAF
利用分块传输吊打所有WAF
[技术]编写Burp分块传输插件绕WAF
HTTP 协议中的 Transfer-Encoding
其他
其他的关于通过构造HTTP协议来绕过WAF,需要攻击者对 HTTP协议的各字段构造,各容器对于HTTP协议的解析 都很熟悉。笔者对于HTTP协议也还是停留在比较浅显的表面,要想更深入的了解HTTP协议,可以去查看官方文档:RFC2616。
WAF匹配规则阶段绕过
利用溢量数据绕过WAF
这种绕过方法利用的是通过提交非常大的数据,由于数据量过大,超过了WAF的正则匹配字符,我们的恶意代码就不经过WAF的正则匹配了,因此我们的恶意代码就进行绕过了。
传送门——> 绕过网站WAF(图片绕过)
其他
其他的关于通过绕过WAF匹配规则来绕过WAF的手段,需要攻击者构造畸形数据来躲避WAF的正则匹配规则,这需要攻击者发散思维,想出尽可能多的奇淫技巧。
了解waf防护原理
查看waf防护位置
熟悉防护规则
了解防护机制
查看拦截时间阀值
我们可以下载一个安全狗,查看它详细的防护机制,以此达到知己知彼,容易绕过。
目录扫描绕过waf
两种方式:
第一:修改客户端ip
第二:减慢扫描速度
第三:通过代理欺骗waf
手工注入绕过waf
搭建测试环境
了解绕过原理
熟悉常见绕过构造语句
构造绕过测试语句
-
注入绕过方法
1.大小写变种
2.使用sql注释
3.使用url编码
4.使用空字节
5.使用嵌套过剥离
6.使用非标准入口点
7.避开自定义过滤器 -
大小写转换
使用简单,但是效果不好
例如: and 1=2 可以使其变为 AnD 1=2 -
使用注释
使用简单,效果一般
union select 1,2,3,4, from admin
注释完的效果
//union//select//1,2,3,4 from admin
//un//io//n//sel//ec//t//1,2,3,4 from admin
第二种注释
/!and/ 1=2 效果显著 此处感叹号为"非"的意思,意思是感叹号后面的不注释 -
url编码
正常编码 ’ 为%27
/ =%2f %2a %=%25
/**/%252f%252a/
url编码现在基本过不掉了 -
使用空字节
一些过滤器在处理输入时,如果碰到空字节就会停止处理
我们通常也会利用空字节进行绕过过滤器
如:
id=1 %00 and 1=2 -
利用嵌套剥离
有些过滤器会从用户的输入中进行剥离一些敏感的函数
那我们可以通过函数的嵌套进行绕过一次剥离
selselectect 剥离后 select
总结编写绕过语句
利用注释
/ABC/
包含关键字
/!/!/!union/
变换提交方式
将get改成post或者cookie提交
/!/and//sdfsdgsfwef=swefs=sdgsewege//sfwewweqrwtewtdg//ssfsb=dsdfsfsog//1=2
4月13日测试过狗可用
通过非注释关键字加一些注释代替空格过waf
变换提交方式有的也可以过狗,但是必须支持post提交方式 -
sqlmap tamper 利用
symboliclogical.py
space2mssqlhash.py
appendnullbyte.py
利用修改tamper绕过waf -
编写过waf一句话思路
利用可变变量
$a=b
$b=c
$$a=c
利用函数
利用判断语句
利用编码 -
突破waf拦截菜刀连接
可以使用最新版菜刀
中国蚁剑客户端
可以使用过狗菜刀+中转脚本 -
上传绕过waf
上传突破禁止上传php文件
第一:文件包含
第二:双文件突破限制
第三:修改上传参数 -
提权过waf
通过程序读密码
通过waf绕过神器
利用exp读hash
将用户添加到远程桌面组,并且给目录降权
利用第三方软件提权