实战 | 如何利用 WAF 缺陷进行绕过
字数 1178 2025-09-23 19:27:46

WAF绕过技术详解

1. 利用WAF性能缺陷的绕过方法

1.1 垃圾字符填充

  • 原理:通用软WAF出于性能考虑,可能跳过检测超大数据包或超长数据
  • 实现方式
    • 在有效载荷前后填充大量无意义字符
    • 例如:id=1 union select 1,2,3id=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

3.2 分块传输

  • 原理:将POST请求体分块传输
  • 增强方法
    • 延时分块传输
    • 结合垃圾字符填充
  • 工具

4. 绕过云WAF的方法

4.1 寻找真实IP

  • 方法
    1. 证书信息查询:myssl.com
    2. 查询DNS历史解析记录
    3. 搜集子域名IP和C段
    4. 使用超级ping等工具

4.2 寻找未部署WAF的Nginx反代机器

  • 步骤
    1. 测试接口获取IP信息
    2. 查找C段服务
    3. 逐个访问尝试

5. 利用WAF白名单的绕过方法

5.1 特定IP白名单

  • 方法
    • 修改XFF等头部为127.0.0.1
    • 使用工具:burpFakeIP

5.2 搜索引擎爬虫白名单

  • 方法
    • 修改User-Agent为搜索引擎标识
    • 例如:User-Agent: Googlebot/2.1

6. 综合绕过策略

  • 组合使用:将多种技术组合使用效果更佳
    • 例如:分块传输+垃圾字符填充+高并发
  • 环境适配:根据目标环境选择最适合的绕过技术
  • 持续测试:不同WAF产品可能有不同的检测逻辑,需要不断尝试
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会忽略该百分号 示例 : WAF可能放行,而后端会解析为: 2.2 TOMCAT特性利用 空白字符插入 : 在参数名前后添加各种空白字符 可用空白字符: %20 (空格)、 %09 (tab)、 %0a (换行)、 %0b (垂直tab)、 %0c (换页)、 %0d (回车)、 %1c (文件分隔符)、 %1d (组分隔符)、 %1e (记录分隔符)、 %1f (单元分隔符) 示例: 编码绕过 : 使用UTF-16、CP037等编码 JSON环境下可使用Unicode编码 3. 利用WAF适配协议缺陷的绕过方法 3.1 畸形请求 方法 : 将HTTP请求头改为随机字符串,如 xxxxT 在请求方法后添加tab等空字符 使用GET方法但带上POST请求体 修改 Content-Type ,如从 application/x-www-form-urlencoded 改为 multipart/form-data 3.2 分块传输 原理 :将POST请求体分块传输 增强方法 : 延时分块传输 结合垃圾字符填充 工具 : chunked-coding-converter 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 5.2 搜索引擎爬虫白名单 方法 : 修改User-Agent为搜索引擎标识 例如: User-Agent: Googlebot/2.1 6. 综合绕过策略 组合使用 :将多种技术组合使用效果更佳 例如:分块传输+垃圾字符填充+高并发 环境适配 :根据目标环境选择最适合的绕过技术 持续测试 :不同WAF产品可能有不同的检测逻辑,需要不断尝试