🛡️ 高性能 WAF 与 CDN 检测工具。识别防护层(Cloudflare、Akamai、AWS、Fastly 等),使用规避载荷运行有效性与强制执行测试,并生成态势报告。使用 Rust 构建 🦀。
用于检测、测试和分析 Web 应用防火墙 (WAF) 与内容分发网络 (CDN) 的 CLI 工具。
重要提示: 仅测试你拥有或已获得明确授权测试的系统。
面向 AI 编码代理: 有关技能映射和工作流指引,请参阅 AGENTS.md。完整评估请使用 agent-skills/waf-assess/WORKFLOW.md;合并前请使用 agent-skills/validate-build/WORKFLOW.md。
| 模式 | 测试内容 | 标志 |
|---|---|---|
| 检测 | 识别目标受哪个 WAF/CDN 保护 | waf-detect <url> |
| 冒烟测试 | 发送已知攻击载荷,测量拦截率 | --smoke-test <url> |
| 执行测试 | 发送分类攻击探测,测量拦截/质询/放行 | --va <url> |
| 行为分析 | 通过配对探测在 5 个通道上测试 WAF 的复杂程度 | --va2 <url> --va2-run |
| 态势报告 | 综合所有测试结果给出统一评级 (A-F) | --posture <url> |
| HTML 报告 | 将保存的 JSON 结果渲染为可分享的静态报告 | report <file.json> |
cargo build --release
./target/release/waf-detect scan example.com
# Full hardening scan + HTML report
./target/release/waf-detect hardening https://example.com --output /tmp/example-hardening.json
./target/release/waf-detect report /tmp/example-hardening.json --output /tmp/example-hardening.html
通过响应头、响应体、DNS、TLS 和时序识别 WAF/CDN。12 家提供商: CloudFlare、AWS、Akamai、Fastly、Vercel、Azure、F5、Imperva、ModSecurity、Sucuri、Radware、FortiWeb。
waf-detect scan example.com --json
waf-detect scan @urls.txt --ndjson
发送已知攻击载荷,测量 WAF 拦截、质询或放行了哪些内容。主动冒烟测试仅针对已注册的自有目标运行。
./target/release/waf-detect --smoke-test example.com
# Aggressive mode (more payloads)
./target/release/waf-detect --smoke-test example.com --aggressive
# Export results
./target/release/waf-detect --smoke-test example.com -o results.json
测试的攻击类别: SQL 注入(基础 + 高级)、XSS(基础 + 高级)、命令注入、路径遍历、SSTI、SSRF、Log4Shell、文件上传、扫描器检测、GraphQL 注入、HTTP 请求走私、原型污染、WebSocket 注入、枚举。
结果分类:
BLOCKED — WAF 拦截了请求(通常为 403)CHALLENGE — 触发了机器人防护(JS 质询、CAPTCHA)ALLOWED — 请求被放行至源站ERROR — 非拦截性失败(404、500、超时)发送分类攻击探测,测量拦截/质询/放行率并给出置信度评分。需要已注册的目标范围。
# Register owned targets once
./target/release/waf-detect --scope init example.com
# Run enforcement test
./target/release/waf-detect --va https://example.com
# With JSON output
./target/release/waf-detect --va https://example.com --va-json
# Save report
./target/release/waf-detect --va https://example.com --va-output report.json
选项:
--va-tier 1|2|3 — 安全层级(1 = 最安全)--va-budget N — 每次运行的最大请求数(默认:120)--va-timeout SECONDS — 每请求超时(默认:15)--va-delay MS — 请求之间的延迟(默认:750)--va-variants N — 每个载荷模板的变体数(默认:4)--va-replay — 将重放计划导出为 JSON--va-replay-csv — 将重放计划导出为 CSV通过跨 5 个 HTTP 通道发送配对探测——一个良性、一个恶意——来测试 WAF 的复杂程度。测量 WAF 是否对二者区别对待。
# Dry run (shows plan without executing)
./target/release/waf-detect --va2 https://example.com
# Run behavioral analysis
./target/release/waf-detect --va2 https://example.com --va2-run
# Full 5-phase analysis
./target/release/waf-detect --va2 https://example.com --va2-run \
--va2-phases baseline,protocol-variance,state-escalation,behavioral-pressure,challenge-interaction
# Save results
./target/release/waf-detect --va2 https://example.com --va2-run --va2-output results.json
测量内容:
| 信号 | 测试内容 |
|---|---|
| 编码防御 | WAF 在匹配前是否对编码路径进行规范化? |
| 会话跟踪 | WAF 是否跟踪会话状态并在重复滥用时升级? |
| 机器人质询 | WAF 是否发出 CAPTCHA 或 JS 质询? |
| 速率限制 |
测试的通道: 路径、查询、请求头、请求体、方法。攻击检测率为 0% 的通道会被标记为未受保护。
选项:
--va2-phases LIST — 要运行的阶段(逗号分隔)--va2-seed N — 用于可复现结果的确定性种子(默认:1337)--va2-budget N — 请求预算(默认:60)--va2-json — 以 JSON 打印计划/报告生成统一的安全评级 (A-F) 和风险评分 (0-100),综合检测置信度、执行测试结果和行为分析。
# Detection only
./target/release/waf-detect --posture example.com
# Include behavioral analysis
./target/release/waf-detect --posture example.com --posture-va2
# Include enforcement testing (VA1) -- distinguishes "WAF present but not
# enforcing" (monitor/log-only mode) from "no WAF at all"
./target/release/waf-detect --posture example.com --posture-va1
# JSON output
./target/release/waf-detect --posture example.com --posture-va2 --posture-json
评级标准:
将保存的 JSON 扫描产物渲染为静态 HTML 报告,便于本地审阅并与其他工程师分享。
# Render a saved hardening report
./target/release/waf-detect hardening https://example.com --output /tmp/example-hardening.json
./target/release/waf-detect report /tmp/example-hardening.json
# Render a saved posture report
./target/release/waf-detect --posture https://example.com --posture-va2 --posture-json > /tmp/example-posture.json
./target/release/waf-detect report /tmp/example-posture.json --output /tmp/example-posture.html
生成的 HTML 是静态且自包含的,因此可以附加到工单、在聊天中分享,或本地打开而无需重新运行扫描。
冒烟测试、载荷分析、执行测试、行为分析和有效性测试都需要已注册的自有目标。
# Check target scope
./target/release/waf-detect --scope
# Initialize target scope
./target/release/waf-detect --scope init example.com api.example.com
# Add authorized target
./target/release/waf-detect --scope add-target admin.example.com
# Remove target
./target/release/waf-detect --scope remove-target api.example.com
# Clear target scope
./target/release/waf-detect --scope clear
风险评分(态势报告):
常见发现:
# List supported providers
./target/release/waf-detect --list
# Effectiveness testing (advanced evasion techniques)
./target/release/waf-detect --effectiveness example.com
# Benchmark against corpus
./target/release/waf-detect --benchmark corpus.json
# Performance snapshot
./target/release/waf-detect example.com --perf-report perf.json
# Debug output
./target/release/waf-detect example.com --debug --verbose
输出选项: --json / --ndjson / --compact / --yaml · waf-detect providers · waf-detect doctor
cargo test --lib
cargo clippy -- -D warnings
cargo fmt
完整详情请参阅 DEVELOPMENT.md。
以下任一许可证授权
由你选择。
除非你明确声明 otherwise,否则任何由你有意提交以纳入本作品的贡献,如 Apache-2.0 许可证中所定义,均应按上述方式双重许可,不附加任何额外条款或条件。
| 模式 | 命令 |
|---|
| 检测 | waf-detect scan <url> 或 waf-detect <url> |
| 加固 | waf-detect hardening <url> --output file.json |
| 冒烟测试 | waf-detect --smoke-test <url> |
| 执行测试 | waf-detect va <url> |
| 行为分析 | waf-detect va2 <url> --run |
| 态势 | waf-detect --posture <url> |
| 有效性 | waf-detect --effectiveness <url> |
| 源站探测 | waf-detect origin-probe <url> --json |
| HTML 报告 | waf-detect report <file.json> -o <file.html> |
| WAF 是否对快速请求进行限流? |
| 攻击识别 | WAF 是否区分攻击探测与良性请求? |