WAF详解,检测与一些绕过方法
在上一篇随笔中,已经简单介绍过WAF的基本信息了。
WAF依据配置情况分为:嵌入性WAF和非嵌入型WAF
嵌入型WAF:直接将WAF嵌入在web应用的代码里。
非嵌入型WAF:独立工作的WAF:此类又分为:
软件型WAF:以软件模式安装配置在服务器上的WAF,能够直接接触服务器文件,可以检查服务器上是否存在后门。
硬件型WAF:以硬件形式部署在链路中,有些类似于IDS和IPS的对流量监控检测防御的原理。
云WAF:以反向代理的方式,对受保护web服务器的进出请求和数据包进行过滤控制。
WAF的检测:这里主要是采用一些安全工具来检测waf
1.sqlmap的WAF检测,利用sqlmap -u ''url'' --indentify -waf --batch
可以识别出是否存在waf,以及waf类型
2.namp:nmap -http-waf-url
3.wafw00f:wafw00f url 指定检测:wafw00f url -t waf类型
WAF的简单绕过:
1.手注绕过:
(1)大小写绕过:例如select,做大小写混合,不过这种绕过方法已经过时了
(2)空字符绕过:在注入语句中拼接空字符,利用waf过滤时检测到空字符无法处理的原理。
(3)重写绕过:有些waf在过滤特殊字符时,可能只会过滤一次,这时候做一个重写,se select lect 利用过滤后,正好组成一个新的恶意特殊字符
(4)编码绕过:waf往往只对url进行一次解码检查,那么进行两次编码就可以简单绕过。
(5)注释绕过:利用反斜杠表示注释来欺骗waf,反斜杠后的关键语句前加上!从而执行恶意操作
2.白名单绕过:
修改use-agent为waf白名单,例如搜索引擎,从而使waf放行
3.上传点绕过:修改数据包信息来绕过过滤机制,例如加前缀后缀,文件头。