
🛡️ 高性能なWAF & CDN検出ツール。保護レイヤー(Cloudflare、Akamai、AWS、Fastlyなど)を特定し、回避ペイロードを用いた有効性および強制適用テストを実行し、ポスチャレポートを生成します。Rustで構築 🦀。
Web Application Firewall(WAF)およびContent Delivery Network(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チャネルにわたってペアプローブ(1つは良性、1つは悪性)を送信することで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はセッション状態を追跡し、繰り返しの悪用でエスカレートするか? |
| ボットチャレンジ |
テストされるチャネル: Path、Query、Header、Body、Method。攻撃検出率が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 を参照してください。
以下のいずれかの下でライセンスされています
お好みで選択してください。
明示的に別段の定めをしない限り、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はCAPTCHAやJSチャレンジを発行するか? |
| レート制限 | WAFは急速なリクエストをスロットリングするか? |
| 攻撃認識 | WAFは攻撃プローブと良性リクエストを区別するか? |