Skip to content

WAF绕过

waf绕过是做WEB安全必须的一个技能项,下面我将会从以下几个方面进行说明如何绕过waf的思路
1. WAF的基础
2. 如何绕过WAF

WAF的基础

waf的全名为 web 防火墙,就是保护web应用的。
知己知彼,才能百战百胜

从 文件传输和错误的输入输出过滤进行 基本方式是获取用户到服务侧的流量,方式主要有三种。

WAF的部署方式

  1. 反向代理,读数据进行净化和阻拦部署在服务器之前 nginx openresty都是实现方式。
  2. 硬件waf,部署位置和反向代理类似,但是获取的是网络层的流量解析为http的流量之后传输给之后的服务器。
  3. 网卡流量,读取网卡中的流量并交给服务器数据,类似于硬件waf的旁路部署模式,产品举个例子有TDP这种产品。
  4. 云waf,cloudflare以及阿里云盾之类的云安全产品。
  5. 软件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  
  1. 使用分块传输
  2. 修改Content-Type

一些tricky

  1. 内联注释
/*!uncion select xxx */ 
/*!select 1 from */
  1. 上传一个webshell,很有可能被杀,但是如果上传一个下载其他webshell的文件被杀的概率就很小。 上传一个包含的php jsp 脚本,该脚本去下载webshell

referer

waf 绕过的方式 WAF绕过拍了拍你 开源WAF测试评估方法

Back to top