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

相关推荐
灰子学技术1 小时前
go response.Body.close()导致连接异常处理
开发语言·后端·golang
AI绘画哇哒哒2 小时前
【干货收藏】深度解析AI Agent框架:设计原理+主流选型+项目实操,一站式学习指南
人工智能·学习·ai·程序员·大模型·产品经理·转行
Gogo8162 小时前
BigInt 与 Number 的爱恨情仇,为何大佬都劝你“能用 Number 就别用 BigInt”?
后端
fuquxiaoguang2 小时前
深入浅出:使用MDC构建SpringBoot全链路请求追踪系统
java·spring boot·后端·调用链分析
晚霞的不甘2 小时前
CANN 在工业质检中的亚像素级视觉检测系统设计
人工智能·计算机视觉·架构·开源·视觉检测
island13142 小时前
CANN HIXL 高性能单边通信库深度解析:PGAS 模型在异构显存上的地址映射与异步传输机制
人工智能·神经网络·架构
毕设源码_廖学姐3 小时前
计算机毕业设计springboot招聘系统网站 基于SpringBoot的在线人才对接平台 SpringBoot驱动的智能求职与招聘服务网
spring boot·后端·课程设计
岁岁种桃花儿3 小时前
Flink CDC从入门到上天系列第一篇:Flink CDC简易应用
大数据·架构·flink
秋邱4 小时前
AIGC 的“隐形引擎”:深度拆解 CANN ops-math 通用数学库的架构与野心
架构·aigc
小a杰.4 小时前
CANN技术深度解析
架构