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

相关推荐
Wang's Blog7 分钟前
Nestjs框架: gRPC微服务通信及安全实践全解析
安全·微服务·架构·nestjs
肖文英10 分钟前
Java类型概览
后端
常先森15 分钟前
【解密源码】 RAGFlow 切分最佳实践- naive parser 语义切块(pdf 篇)
架构·llm·agent
武子康15 分钟前
大数据-144 Apache Kudu:实时写 + OLAP 的架构、性能与集成
大数据·后端·nosql
程序员小假18 分钟前
设计模式了解吗,知道什么是饿汉式和懒汉式吗?
java·后端
golang学习记22 分钟前
Spring Boot 4.0官宣: 弃用 Undertow:Tomcat笑麻了
后端
林太白23 分钟前
rust-Serialize序列和反序列Deserialize
后端·rust
用户685453759776923 分钟前
🌐 分布式算法:限流、负载均衡、分布式ID,实战必备!
后端
后端小张23 分钟前
【JAVA 进阶】穿越之我在修仙世界学习 @Async 注解(深度解析)
java·开发语言·spring boot·后端·spring·注解·原理
Qinana27 分钟前
🚙微信小程序实战解析:打造高质感汽车展示页
前端·css·程序员