
RSC/Next.js RCE (CVE-2025-55182 & CVE-2025-66478) 向け高忠実度検出メカニズム
React Server Componentsを使用するNext.jsアプリケーションにおけるCVE-2025-55182およびCVE-2025-66478を検出するためのコマンドラインツールです。
脆弱性と検出方法の技術的詳細については、ブログ記事を参照してください: https://slcyber.io/research-center/high-fidelity-detection-mechanism-for-rsc-next-js-rce-cve-2025-55182-cve-2025-66478
デフォルトでは、スキャナは決定的な数学演算(41*271 = 11111)を実行するRCEの概念実証(PoC)ペイロードを含む、細工されたmultipart POSTリクエストを送信します。脆弱なホストは、X-Action-Redirectレスポンスヘッダーに/login?a=11111として結果を返します。
スキャナはデフォルトでルートパス(/)をテストします。カスタムパスをテストするには--pathまたは--path-fileを使用します。脆弱でない場合、同一ホストへのリダイレクト(例:/から/en/)を追跡し、リダイレクト先をテストします。クロスオリジンのリダイレクトは追跡されません。
--safe-checkフラグは、ターゲット上でコードを実行せずに、サイドチャネル指標(特定のエラーダイジェストを伴う500ステータスコード)に依存する代替検出方法を使用します。RCEの実行が望ましくない場合はこのモードを使用してください。
--waf-bypassフラグは、multipartリクエストボディの先頭にランダムなジャンクデータを追加します。これにより、リクエストボディの最初の部分のみを解析するWAFのコンテンツ検査を回避できます。デフォルトサイズは128KBで、--waf-bypass-sizeで設定可能です。WAFバイパスが有効な場合、タイムアウトは自動的に20秒に増加します(明示的に設定されている場合を除く)。
--vercel-waf-bypassフラグは、Vercel WAFの保護を回避するために特別に設計された代替ペイロードのバリアントを使用します。これは、追加のフォームフィールドを持つ異なるmultipart構造を使用します。
--windowsフラグは、Windows上で動作するターゲットに対して、ペイロードをUnixシェル(echo $((41*271)))からPowerShell(powershell -c "41*271")に切り替えます。
pip install -r requirements.txt
単一ホストをスキャン:
python3 scanner.py -u https://example.com
ホストのリストをスキャン:
python3 scanner.py -l hosts.txt
複数スレッドでスキャンして結果を保存:
python3 scanner.py -l hosts.txt -t 20 -o results.json
カスタムヘッダーでスキャン:
python3 scanner.py -u https://example.com -H "Authorization: Bearer token" -H "Cookie: session=abc"
安全なサイドチャネル検出を使用:
python3 scanner.py -u https://example.com --safe-check
Windowsターゲットをスキャン:
python3 scanner.py -u https://example.com --windows
WAFバイパスでスキャン:
python3 scanner.py -u https://example.com --waf-bypass
カスタムパスをスキャン:
python3 scanner.py -u https://example.com --path /_next
python3 scanner.py -u https://example.com --path /_next --path /api
python3 scanner.py -u https://example.com --path-file paths.txt
-u, --url Single URL to check
-l, --list File containing hosts (one per line)
-t, --threads Number of concurrent threads (default: 10)
--timeout Request timeout in seconds (default: 10)
-o, --output Output file for results (JSON)
--all-results Save all results, not just vulnerable hosts
-k, --insecure Disable SSL certificate verification
-H, --header Custom header (can be used multiple times)
-v, --verbose Show response details for vulnerable hosts
-q, --quiet Only output vulnerable hosts
--no-color Disable colored output
--safe-check Use safe side-channel detection instead of RCE PoC
--windows Use Windows PowerShell payload instead of Unix shell
--waf-bypass Add junk data to bypass WAF content inspection
--waf-bypass-size Size of junk data in KB (default: 128)
--path Custom path to test (can be used multiple times)
--path-file File containing paths to test (one per line)
RCE PoCは元々@maple3142によって公開されました。動作するPoCを公開してくれた彼らの仕事に心から感謝しています。
このツールは元々、RCEを安全に検出する方法として構築されました。この機能は今でも--safe-check(「安全な検出」モード)で利用できます。
結果はターミナルに出力されます。-oを使用すると、脆弱なホストは検証用の完全なHTTPリクエストとレスポンスを含むJSONファイルに保存されます。