cluren's Studio.

WAF介绍及常见绕过方法

字数统计: 1.1k阅读时长: 3 min
2019/10/23

一、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的检测。
常见方法有:


参考:《WEB渗透测试实战指南》

CATALOG
  1. 1. 一、WAF简介
    1. 1.1. 1.工作原理
    2. 1.2. 2.WAF分类
      1. 1.2.1. 软件型WAF
      2. 1.2.2. 硬件型WAF
      3. 1.2.3. 云WAF
      4. 1.2.4. 网站系统内置的WAF
  2. 2. 二、一些WAF绕过方法(以注入为主)
    1. 2.1. 1.大小写绕过
    2. 2.2. 2.特殊字符替换空格或注释绕过
    3. 2.3. 3.编码绕过
    4. 2.4. 4.关键字替换绕过
    5. 2.5. 5.多请求拆分绕过
    6. 2.6. 6.利用cookies绕过
    7. 2.7. 7.云WAF绕过之寻找网站源ip