
waf-checker v1.1.0
ファイアウォールベンダーを検出し、19の攻撃カテゴリを高度な回避ペイロードでテストし、CLI、Cloudflare Worker、Dockerを介して色分けされたバイパス分析を提供する自動WAF評価ツール。
WAF Checker
このプロジェクトは、Webアプリケーションファイアウォール(WAF)が一般的なWeb攻撃から製品をどの程度保護しているかを確認するのに役立ちます。これは、Cloudflare Worker(組み込みのインタラクティブWeb UI付き)またはスタンドアロンのNode.js CLIツールとして実行できます。
機能
コアテスト
- ターゲットURLを入力し、HTTPメソッド(GET、POSTなど)と攻撃カテゴリを選択します。
- 攻撃ペイロードを含むリクエストを送信します(パラメータ、ヘッダー、またはファイルパスとして)。
- 色分けされたターミナルとWeb結果:🟢 403/BLOCKED = ブロック、🔴 2xx/5xx = 潜在的なバイパス、🟠 3xx = リダイレクト。
- 各ペイロードの詳細を含むフィルタリング可能なテーブルで結果を表示。
攻撃カテゴリ(全19種類)
SQLインジェクション, XSS, パストラバーサル, コマンドインジェクション, SSRF, NoSQLインジェクション, ローカルファイルインクルージョン, LDAPインジェクション, HTTPリクエストスマグリング, オープンリダイレクト, 機密ファイル, CRLFインジェクション, UTF8/Unicodeバイパス, XXE, SSTI, HTTPパラメータ汚染, Webキャッシュポイズニング, IPバイパス, User-Agent。
WAF検出
- テスト前にWAFタイプを自動検出(Cloudflare、AWS WAF、ModSecurity、Akamai、Imperva、F5 BIG-IPなど)。
- 検出されたWAFに基づいて特定のバイパス技術を提案。
- WAF固有の高度なペイロードに自動切り替え可能。
高度なペイロードとエンコーディング
- WAFバイパスペイロード — ダブルエンコーディング、ユニコード、大文字小文字混在、コメントインジェクション、ポリグロットペイロード。
- 拡張ペイロード — 最新の回避技術。
- エンコーディングバリエーション — URL、ユニコード、HTMLエンティティ、16進数、8進数、Base64エンコーディングの自動組み合わせ。
- Cloudflare、AWS WAF、ModSecurity向けのWAF固有のバイパス。
HTTPプロトコル操作
- HTTP動詞改ざん — 一般的でないHTTPメソッドのテスト。
- パラメータ汚染 — クエリ/ボディ間でパラメータを重複および分割。
- Content-Type混乱 — ルールをバイパスするために代替コンテンツタイプを使用。
- リクエストスマグリングヘッダー。
- ホストヘッダーインジェクションのバリエーション。
- ヘッダーを介したHTTPメソッドオーバーライド(
X-HTTP-Method-Overrideなど)。
バッチテスト
- 複数のURLを一度にテスト。
- 設定可能な同時実行数とリクエスト間の遅延。
- リアルタイムの進捗追跡。
プロジェクト構造
プロジェクトはNPM Workspacesモノレポとして構成されています:
packages/core/: コアセキュリティテストライブラリ、ペイロード定義、WAFフィンガープリンティングシグネチャ、難読化エンコーダ。packages/worker/: 静的HTML/JS Web UIとJSON APIエンドポイントを提供するCloudflare Workerパッケージ。packages/cli/: ターミナルから直接監査を実行するNode.jsコマンドラインインターフェースツール。
インストールとビルド
ルートディレクトリから、依存関係をインストールし、すべてのワークスペースをビルドします:
npm install
npm run build
実行方法
1. Web版(Cloudflare Worker)
Worker開発サーバーをローカルで実行するには(Wranglerが必要):
npm run dev:worker
Web UIはhttp://localhost:8787でアクセス可能です(8787が使用中の場合は別のポート)。
WorkerをCloudflareにデプロイするには:
npx wrangler deploy --workspace=packages/worker
2. CLI版(Node.js)
コマンドラインから直接セキュリティテスト監査を実行するには:
# 一般的なCLIヘルプと使用方法を表示
node packages/cli/dist/index.js --help
# checkコマンドのヘルプを表示(すべてのメソッド、カテゴリ、WAFベンダーを一覧表示)
node packages/cli/dist/index.js check --help
WAF検出
ターゲットURLの背後にあるWAFベンダーを検出:
node packages/cli/dist/index.js detect <url>
脆弱性ペイロード監査
ターゲットURLに対して監査を実行:
# デフォルトチェック(GETメソッド、すべてのペイロードカテゴリ)
node packages/cli/dist/index.js check https://example.com
# 特定のメソッド、カテゴリ、WAF回避を有効にしたカスタムチェック
node packages/cli/dist/index.js check https://example.com -m GET,POST -c "SQL Injection,XSS" --auto-detect-waf --encoding-variations
バッチ監査
ファイルで定義されたURLのリストに対してバッチ監査を実行:
node packages/cli/dist/index.js batch targets.txt --concurrency 3
3. Docker版
CLIはDockerを使用して実行できます。GitHub Container Registryからビルド済みイメージをプルするか、ローカルでビルドします。
ビルド済みイメージの使用(推奨)
ビルド済みDockerイメージはGitHub Container Registryのghcr.io/sech0us3/waf-checker-cliで利用可能です。
イメージをプル
docker pull ghcr.io/sech0us3/waf-checker-cli:latest
ヘルプを表示
docker run --rm ghcr.io/sech0us3/waf-checker-cli:latest --help
チェックを実行
docker run --rm -it ghcr.io/sech0us3/waf-checker-cli:latest check https://example.com
バッチ監査の実行(ローカルディレクトリをマウント)
docker run --rm -it -v "$(pwd):/data" ghcr.io/sech0us3/waf-checker-cli:latest batch /data/targets.txt --concurrency 3
ローカルでのビルド
イメージをビルド
docker build -t waf-checker-cli .
ヘルプを表示
docker run --rm waf-checker-cli --help
チェックを実行
docker run --rm -it waf-checker-cli check https://example.com
バッチ監査の実行(ローカルディレクトリをマウント)
docker run --rm -it -v "$(pwd):/data" waf-checker-cli batch /data/targets.txt --concurrency 3
テスト
ワークスペース全体のテストスイートを実行するには(Vitestを使用):
npm test
私のブログはyoursec.substack.comで読めます