WAF绕过

一、WAF简介

WAF(WebApplicationFirewall)也称:网站应用级入侵防御系统,是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。

1.工作原理

对web应用程序客户端发出的流量进行内容检测和验证,检测其安全性与合法性,来屏蔽常见的网站漏洞攻击,如SQL注入,XML注入、XSS等。

2.WAF分类

软件型WAF

以软件形式装在所保护的服务器上的WAF,由于安装在服务器上,所以可以接触到服务器上的文件,直接检测服务器上是否存在WebShell是否有文件被创建等。代表性的产品有:安全狗,D盾。

硬件型WAF

以硬件形式部署再链路中,支持多种部署方式,当串联到链路中时可以拦截恶意流量,在旁路监听模式时只记录攻击不进行拦截。代表性的产品有:nsfocus, imperva硬件。

云WAF

一般以反向代理的形式工作,通过配置NS记录或CNAME记录,使对网站的请求报文优先经过WAF主机,经过WAF主机过滤后,将认为无害的请求报文再发生给实际网站服务器进行请求,可以说是戴防护功能的CDN。代表性的产品有:百度云加速,阿里云云盾。

网站系统内置的WAF

网站系统内置的WAF也可以说是网站系统中内置的过滤,直接镶嵌在代码中,相对来说自由度高一般有以下这几种情况。

输入参数强制类型转换(intval等)。

输入参数合法性检测。

关键函数执行(SQL执行、页面显示、命令执行等)前,对经过流程的输入进行检测。

对输入的数据进行替换过滤后再继续执行代码流程(转义/替换掉特殊字符等)。

网站系统内置的WAF与业务更加锲合,在对安全与业务都比较了解的情况下,可以更少的收到误报与漏报。

二、WAF绕过方法(以注入为主)

1.大小写绕过

比如waf拦截union select,可以构造Union sElEcT来绕过。

2.特殊字符替换空格或注释绕过

可以用注释来替代空格进行绕过,有些waf在检测时不会识别注释或者将注释替换掉,如sqlserver中可以用/**/代替空格,在mysql中 %0a 是换行,可以代替空格。

如union select 1,2可转换为union/*xx*/select/*xx*/1,2

3.编码绕过

少数waf不会对普通字符进行URL解码,还有一部分waf只会进行一次url解码,所以可以对payload进行二次url编码。常见的SQL编码有unicode、HEX、URL、ascll、base64等,XSS编码有:HTML、URL、ASCII、JS编码、base64等等。

如 union select 1,2可对其进行url编码后进行绕过waf。

4.关键字替换绕过

有些WAF会删除或者替换关键字,如遇到select union等敏感字词。

如 union select 1,2,3可替换为ununionion selselectect 1,,2,3

5.多请求拆分绕过

对于多个参数的语句,可以将注入语句分割插入。

如这样的请求:?a=[inputa]&b=[inputb]可将参数a和b拼接如:and a=[inputa] and b=[inputb]

6.利用cookies绕过

对于用了$_REQUEST来获取参数的网站可以尝试将payload放在cookie中进行绕过REQUEST会依次从GET POST cookie中获取参数,如果WAF只检测了GET/POST而没有检测cookie,可以将语句放在cookie中进行绕过。

7.云WAF绕过之寻找网站源ip

采用云WAF的网站可以寻找网站真实ip来绕过云WAF的检测。

常见方法有:

采用多地ping的方法查看ip地址解析分析真实ip

在线ping网站有:

http://ping.chinaz.com/

http://ping.aizhan.com/

http://ce.cloud.360.cn/

使用 nslookup 进行检测,原理同上。

寻找网站历史解析记录。

找网站的二级域名、NS、MX记录等对应的ip。

订阅网站邮件,查看邮件发送方的ip。

你可能感兴趣的:(WAF绕过)