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

相关推荐
前端不太难7 分钟前
RN 的导航体系太混乱,如何选型和架构设计?
前端·react native·架构
愿你天黑有灯下雨有伞10 分钟前
Spring Boot 使用FastExcel实现多文件打包 ZIP导出
windows·spring boot·后端
嘟嘟w22 分钟前
双亲委派的概念
java·后端·spring
谢尔登29 分钟前
从Chromium架构看浏览器执行机制
架构
TDengine (老段)30 分钟前
TDengine 数据缓存架构及使用详解
大数据·物联网·缓存·架构·时序数据库·tdengine·涛思数据
葡萄城技术团队31 分钟前
活字格低代码平台:企业数字化转型的技术架构与实践剖析
低代码·架构
IMPYLH32 分钟前
Lua 的 xpcall 函数
开发语言·笔记·后端·游戏引擎·lua
拾忆,想起35 分钟前
Dubbo服务依赖问题终结指南:从根因分析到系统化解决方案
微服务·性能优化·架构·dubbo·safari
Hooray1141 分钟前
后端_Flask学习笔记
笔记·后端·python·学习·flask
CNRio1 小时前
Redis:内存中的数据引擎,架构解析与设计指南
数据库·redis·架构