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应用的安全性。

相关推荐
AskHarries3 分钟前
模型降级、重试和错误处理策略
程序员
周杰伦fans4 分钟前
续集:工作空间一切换,我的插件菜单就消失?——MenuBar与Ribbon的自动重载方案
后端·ribbon·c#
恼书:-(空寄9 分钟前
接口乱改直接炸线上!微服务接口版本控制全方案:URL_请求头版本+接口兼容原则,老旧系统无痛迭代
微服务·架构
happyprince16 分钟前
08_verl-Workers模块详解
人工智能·架构·强化学习
可乐ea1 小时前
【Spring Boot + MyBatis|第7篇】JWT 登录认证与拦截器实现
java·spring boot·后端·mybatis·状态模式
丷丩1 小时前
错误处理与容错机制:GeoAI-UP的降级策略设计
架构·gis·容错设计
西安邮电大学1 小时前
有关栈的经典算法题
java·后端·其他·算法·面试
小短腿的代码世界1 小时前
Qt定时器高精度架构:从QTimer源码到纳秒级定时调度
数据库·qt·架构
手握风云-1 小时前
ProtoBuf:从序列化原理到高性能架构底座(一)
java·网络·架构
阿狸猿1 小时前
论大规模分布式系统缓存设计策略
架构