WAF绕过
waf绕过是做WEB安全必须的一个技能项,下面我将会从以下几个方面进行说明如何绕过waf的思路
1. WAF的基础
2. 如何绕过WAF
WAF的基础
waf的全名为 web 防火墙,就是保护web应用的。
知己知彼,才能百战百胜
从 文件传输和错误的输入输出过滤进行 基本方式是获取用户到服务侧的流量,方式主要有三种。
WAF的部署方式
- 反向代理,读数据进行净化和阻拦部署在服务器之前 nginx openresty都是实现方式。
- 硬件waf,部署位置和反向代理类似,但是获取的是网络层的流量解析为http的流量之后传输给之后的服务器。
- 网卡流量,读取网卡中的流量并交给服务器数据,类似于硬件waf的旁路部署模式,产品举个例子有TDP这种产品。
- 云waf,cloudflare以及阿里云盾之类的云安全产品。
- 软件waf,比较多,常见的安全狗这种产品
上述说了五种方式,其实是比较细分的主要的waf我认为按照地理上来分布其实只有三种。
第一种是软件WAF,部署在应用服务器上 云锁,安全狗。
第二种是硬件WAF,这也是前些年卖硬件产品的乙方最喜欢在机房部署的东西。
第三种是云WAF,现在网站上云之后的一些云安全产品,cloudflare提供的保护,或者是利用开源产品做nginx反代的产品。
WAF的原理
waf一般内置了一些检测的规则,当输入的某些参数触碰到规则的时候,则说明请求很有可能是攻击者来自攻击者。
绕过waf的思路
既然是规则,那么我们只要不触碰规则即可让我们的攻击请求成功发生了。 根据部署的方式 参数请求 有以下两种思路
部署
当目标服务器使用的是云服务器时,我们可以寻找到原站进行即可绕过云waf
请求
字符相关
常见的方式
1. 使用十六进制编码 select from 0x11111
2. 关键字替换 and - &&
3. 大小写转换 select - SelEct
4. 双写字符 select - seselectlect
5. url编码 select * from zzz - select * from %257a%257a%257a
6. 注释符绕过
修改请求
通过修改请求当中的参数来绕过waf
1. 将referer修改为本地的地址
2. 修改编码为不常见的编码
3. 使用大量的参数进行 后面不会进行过滤 openresty以及一些中间件都很吃这套
id=1&id=1.......id=1&id=evilpayload
- 使用分块传输
- 修改Content-Type
一些tricky
- 内联注释
/*!uncion select xxx */
/*!select 1 from */
- 上传一个webshell,很有可能被杀,但是如果上传一个下载其他webshell的文件被杀的概率就很小。 上传一个包含的php jsp 脚本,该脚本去下载webshell