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

Web应用防火墙(WAF)是防止网络攻击的重要防线,但攻击者往往能通过各种技术绕过它的保护。

以下是10种常见的绕过方法,并结合技术细节和代码示例,帮助您深入理解这些技术。


1. Payload 编码与混淆

通过对攻击载荷进行编码或混淆,攻击者可以使WAF难以检测到恶意模式。

常见编码技术:

  • 十六进制编码:将字符替换为其十六进制表示。
  • Base64编码:将整个载荷转换为Base64字符串。
  • URL编码 :将特定字符编码为%xx形式。

代码示例

普通SQL语句:

sql 复制代码
SELECT * FROM users WHERE id = 1;

十六进制编码后:

text 复制代码
%53%45%4C%45%43%54%20%2A%20%46%52%4F%4D%20%75%73%65%72%73%20%57%48%45%52%45%20%69%64%20%3D%201;

如果WAF未正确解码,将漏检此SQL注入。


2. HTTP参数污染 (HTTP Parameter Pollution, HPP)

发送同名多个参数,部分WAF可能只检查第一个参数。

代码示例

攻击者发送:

http 复制代码
GET /login?username=admin&password=admin123&password=malicious_payload

服务器可能处理第二个password参数,导致绕过。


3. 大小写转换

一些WAF对关键字匹配区分大小写。攻击者可以通过变换关键字大小写避开检测。

代码示例

原始SQL注入:

sql 复制代码
SELECT * FROM users WHERE username = 'admin';

转换大小写后:

sql 复制代码
SeLeCt * FrOm users WhErE username = 'admin';

低级WAF可能无法识别此SQL注入。


4. IP分片

通过将请求拆分为多个小的IP数据包,绕过未能重组数据包的WAF。

代码示例

完整HTTP请求:

http 复制代码
GET /fragments/part1

http 复制代码
GET /fragments/part2

每个片段可能单独被WAF忽略,完整恶意载荷在服务器重组后执行。


5. JSON与XML载荷攻击

现代API经常使用JSON或XML格式传输数据,攻击者可以在这些格式中嵌入恶意代码。

代码示例

JSON示例:

json 复制代码
{
   "username": "admin",
   "password": "<script>alert('XSS')</script>"
}

如果WAF未深度解析这些格式,攻击可能成功。


6. 绕过会话感知

一些WAF无状态处理每个请求。攻击者分多次发送无害请求,最后注入恶意载荷。

代码示例

  • 请求1:GET /login
  • 请求2:POST /login(发送合法凭据)
  • 请求3:POST /profile?id=1'; DROP TABLE users;--

如果WAF逐个请求处理,不会发现SQL注入。


7. 404绕过

攻击者请求不存在的资源,部分WAF可能降低对404响应的检查力度。

代码示例

攻击请求:

http 复制代码
GET /nonexistentpage?payload=<script>alert('XSS')</script>

虽然资源不存在,恶意脚本可能仍被服务器执行。


8. 基于DNS的攻击

WAF通常基于域名过滤,攻击者可直接请求服务器的IP地址。

代码示例

绕过域名:

http 复制代码
GET http://192.168.1.1/login

避免了WAF基于域名的规则检测。


9. 绕过速率限制

通过分布式攻击(如使用僵尸网络)或降低请求频率,避开WAF速率限制。

代码示例

  • 短时间发送大量请求:1000 requests/sec
  • 改为分布式低频率:1 request/sec per IP

使用僵尸网络IP池模拟正常用户行为,绕过限制。


10. 利用零日漏洞

攻击者发现应用程序或依赖库中的新漏洞,而WAF无相应规则时,即可成功绕过。

代码示例

Apache Struts漏洞利用(示例):

http 复制代码
Content-Type: %{(#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('X-Test','test'))}

在WAF规则更新前,攻击将继续有效。


总结

绕过WAF的技术涉及编码、混淆、协议细节利用等多种策略。通过深度了解WAF的工作原理和攻击载荷的表现形式,可以设计更有效的防御策略。此外,以下几点对增强WAF的防护能力尤为重要:

  1. 深度检测:确保WAF能解析各种编码和协议格式。
  2. 会话感知:追踪多次请求之间的上下文关系。
  3. 快速响应:及时更新规则库以应对零日漏洞。

通过结合这些策略,可显著提高Web应用的安全性。

相关推荐
ᝰꫝꪉꪯꫀ3611 小时前
JavaWeb——Maven高级
java·后端·maven·springboot
轩情吖4 小时前
模拟实现Bash
linux·c语言·开发语言·c++·后端·bash·环境变量
李昊哲小课4 小时前
springboot整合hive
大数据·数据仓库·hive·spring boot·后端·数据分析
uhakadotcom5 小时前
Java JDK 23 最新更新:功能亮点与开发者必备指南
后端
uhakadotcom5 小时前
sam altman:如何撰写优秀的文档
架构
uhakadotcom5 小时前
AI搜索引擎的尽头是电商?从perplexity开始卖货说起...
前端·人工智能·后端
uhakadotcom5 小时前
Java中的代码简化技巧:让开发更轻松
后端
张声录16 小时前
使用client-go在命令空间test里面对pod进行操作
开发语言·后端·golang
新智元6 小时前
AI卷翻科研!DeepMind 36页报告:全球实验室被「AI科学家」指数级接管
人工智能·后端