RSC における脆弱性の検証を行うリポジトリです。
公式サイト: react2shell.com
本リポジトリに含まれるコードは、セキュリティ研究および学習目的のために作成されています。
管理下にあるローカル環境以外での実行、および許可のないシステムへの攻撃は法律で固く禁止されています。
本リポジトリの利用により生じたいかなる問題も一切の責任を負いません。悪用厳禁です。
Next.js: v16.0.1
Runtime: Bun / Node.js
以下の手順で実行してください
プロジェクトのルートディレクトリで、依存関係のインストールと Web サーバの起動を行います。
# 依存関係のインストール
bun install
# Webサーバを起動 (別ターミナルで実行し続けること)
bun run dev:web1.Webサーバ起動後、ブラウザで http://localhost:3000/ にアクセスします。
2.開発者ツールを開き、Networkタブを選択します。
3.Webフロントエンド上のSubmitボタンを押します。
4.Networkタブに表示された"localhost"を選択しヘッダーから、Next-Action の値をコピーします。
5.実行したい検証スクリプト(例: readenv.ts など)を開き、NEXT_ACTION_ID の値を先程コピーしたものに書き換えます。# サーバクラッシュの検証
bun run send
# 電卓の起動
bun run calculator
# ファイル書き込み (test.txt の生成)
bun run writeFile
# 環境変数の奪取 (エラーベース)
bun run readenv- attack は検証用のスクリプトなので実行してもエラーになります
このプロジェクトは攻撃者側スクリプトと攻撃対象 Web サーバをモノレポ構成で実装しています。
以下の構成図では不要なファイルは省略しています
root/
├── apps/
│ ├── attacker/ # 攻撃者側スクリプト
│ │ ├── attack-request.ts # 検証用
│ │ ├── calculator.ts # 電卓起動スクリプト
│ │ ├── readenv.ts # 環境変数奪取スクリプト
│ │ ├── reverseShell.ts # リバースシェル攻撃スクリプト
│ │ ├── send-request.ts # HTTP通信確認・DoS検証用
│ │ └── writeFile.ts # ファイル書き込みスクリプト
│ └── web/ # 攻撃対象のNext.jsサーバ
│ ├── app/ # App Router
│ ├── public/
│ │ └── test.txt # ファイル書き込みスクリプト実行で生成されるファイル(.gitignore済み)
│ └── .env.local # 環境変数
└── 省略