实战 | 如何利用 WAF 缺陷进行绕过
字数 1178 2025-09-23 19:27:46
WAF绕过技术详解
1. 利用WAF性能缺陷的绕过方法
1.1 垃圾字符填充
- 原理:通用软WAF出于性能考虑,可能跳过检测超大数据包或超长数据
- 实现方式:
- 在有效载荷前后填充大量无意义字符
- 例如:
id=1 union select 1,2,3→id=1 [大量垃圾字符]union[更多垃圾字符]select 1,2,3
1.2 高并发请求攻击
- 原理:WAF在高负载下可能直接放行部分请求
- 实现方式:
- 使用多线程/多进程同时发送大量请求
- 结合垃圾字符填充效果更佳
2. 利用WAF适配组件缺陷的绕过方法
2.1 IIS+ASP环境特性
- 特性:当URL中出现百分号但后续字符组合不在URL编码表内时,ASP会忽略该百分号
- 示例:
xxx.asp?id=1 union se%lect 1,2,3,4 fro%m adm%in- WAF可能放行,而后端会解析为:
xxx.asp?id=1 union select 1,2,3,4 from admin
2.2 TOMCAT特性利用
-
空白字符插入:
- 在参数名前后添加各种空白字符
- 可用空白字符:
%20(空格)、%09(tab)、%0a(换行)、%0b(垂直tab)、%0c(换页)、%0d(回车)、%1c(文件分隔符)、%1d(组分隔符)、%1e(记录分隔符)、%1f(单元分隔符) - 示例:
%20filename%0a="1.jsp"
-
编码绕过:
- 使用UTF-16、CP037等编码
- JSON环境下可使用Unicode编码
3. 利用WAF适配协议缺陷的绕过方法
3.1 畸形请求
- 方法:
- 将HTTP请求头改为随机字符串,如
xxxxT - 在请求方法后添加tab等空字符
- 使用GET方法但带上POST请求体
- 修改
Content-Type,如从application/x-www-form-urlencoded改为multipart/form-data
- 将HTTP请求头改为随机字符串,如
3.2 分块传输
- 原理:将POST请求体分块传输
- 增强方法:
- 延时分块传输
- 结合垃圾字符填充
- 工具:
4. 绕过云WAF的方法
4.1 寻找真实IP
- 方法:
- 证书信息查询:myssl.com
- 查询DNS历史解析记录
- 搜集子域名IP和C段
- 使用超级ping等工具
4.2 寻找未部署WAF的Nginx反代机器
- 步骤:
- 测试接口获取IP信息
- 查找C段服务
- 逐个访问尝试
5. 利用WAF白名单的绕过方法
5.1 特定IP白名单
- 方法:
- 修改XFF等头部为
127.0.0.1 - 使用工具:burpFakeIP
- 修改XFF等头部为
5.2 搜索引擎爬虫白名单
- 方法:
- 修改User-Agent为搜索引擎标识
- 例如:
User-Agent: Googlebot/2.1
6. 综合绕过策略
- 组合使用:将多种技术组合使用效果更佳
- 例如:分块传输+垃圾字符填充+高并发
- 环境适配:根据目标环境选择最适合的绕过技术
- 持续测试:不同WAF产品可能有不同的检测逻辑,需要不断尝试