意図的に脆弱性を仕込んだNext.jsアプリ(CVE-2025-55182のセキュリティ研究およびCTFチャレンジ用)
⚠️ 教育目的専用: これは、認可されたセキュリティ研究およびCTFチャレンジのために設計された、意図的に脆弱性を含むアプリケーションです。無許可のシステムに対してこれらの手法を使用しないでください。
React Server Componentsにおける深刻なリモートコード実行(RCE)脆弱性である**CVE-2025-55182 (React2Shell)**を実証する、意図的に脆弱なNext.js 15.1.6アプリケーションです。セキュリティ研究者、ペネトレーションテスター、学生が安全で隔離された環境で攻撃手法を練習できるように構築されています。
CVE-2025-55182は、React2Shellとしても知られ、Next.jsのReact Server Componentsに影響を与える深刻なリモートコード実行(RCE)脆弱性です。
この脆弱性は、React Server Actionsにおけるシリアライズデータの不適切な処理に起因します。攻撃者は、検証を回避してサーバー上で任意のコードを実行する悪意のあるペイロードを、以下の方法で作成できます:
始める前に、以下がインストールされていることを確認してください:
docker --version
docker-compose --version
git --version
# 1. Clone the repository
git clone https://github.com/Machine-farmer/PunchingBag-for-React2Shell.git
cd PunchingBag-for-React2Shell
# 2. Build and run with Docker
docker-compose up --build
# 3. Access the application
# Open your browser to: http://localhost:3000
# 1. Clone the repository
git clone https://github.com/Machine-farmer/punchingbag-cve-2025-55182.git
cd punchingbag-cve-2025-55182
# 2. Install dependencies
npm install
# 3. Run development server
npm run dev
# 4. Access at http://localhost:3000
⚠️ 警告: セキュリティ研究では、Dockerなしの手動セットアップは推奨されません。隔離には常にDockerを使用してください。
# Start the vulnerable application
docker-compose up
# Start in detached mode (background)
docker-compose up -d
# View logs
docker-compose logs -f
# Stop containers
docker-compose down
# Stop and remove volumes
docker-compose down -v
# Complete cleanup (removes images)
docker-compose down -v --rmi all
起動したら、以下にアクセスしてください:
PunchingBagには、さまざまな攻撃手法をテストする5つの隠しフラグが含まれています:
| フラグ | チャレンジ | 難易度 | ポイント |
|---|---|---|---|
| 🚩 フラグ1 | 基本的な偵察 | 簡単 | 100 |
| 🚩 フラグ2 | Server Actionの悪用 | 中級 | 200 |
| 🚩 フラグ3 | 管理アクセスバイパス | 中級 | 300 |
| 🚩 フラグ4 | リモートコード実行 | 難しい | 400 |
| 🚩 フラグ5 | 環境シークレット | 中級 | 250 |
すべてのフラグは CTF{description_here} の形式に従います。
# Explore the application
curl http://localhost:3000
# Check available endpoints
curl http://localhost:3000/dashboard
curl http://localhost:3000/admin
フォーム送信を傍受し、ペイロードを変更します:
// Example malicious payload
{
"name": "attacker",
"email": "[email protected]",
"message": "__proto__: { isAdmin: true }"
}
# Inject malicious headers
curl -X POST http://localhost:3000/api/data \
-H "Content-Type: application/json" \
-H "x-user-data: {\"role\":\"admin\"}" \
-d '{"exploit": true}'
.env.localで認証情報を確認するか、認証を悪用します:
# Default admin token (intentionally weak)
Username: admin
Token: super_secret_admin_key_12345
脆弱なコンポーネントでコマンド実行機能を使用します:
# Simulate RCE
Command: cat /flag.txt
__proto__プロパティを注入するpunchingbag-cve-2025-55182/
├── app/
│ ├── actions.js # Vulnerable Server Actions
│ ├── layout.js # Application layout
│ ├── page.js # Homepage with CTF info
│ ├── globals.css # Global styles
│ ├── admin/
│ │ └── page.js # Admin panel (Flag 3, 4)
│ ├── dashboard/
│ │ └── page.js # User dashboard (Flag 1, 2)
│ └── api/
│ ├── data/
│ │ └── route.js # API endpoint
│ └── submit/
│ └── route.js # Form submission endpoint
├── components/
│ ├── Logo.js # Application logo
│ ├── VulnerableForm.js # Exploitable form component
│ └── UserDisplay.js # User profile display
├── lib/
│ └── flags.js # Flag management
├── public/
│ └── boxing-bag.png # Application icon
├── .env.local # Environment variables (Flag 5)
├── docker-compose.yml # Docker configuration
├── Dockerfile # Container definition
├── next.config.js # Next.js configuration
├── package.json # Dependencies
└── README.md # This file
このアプリケーションは意図的に脆弱であり、以下のために設計されています:
✅ 認可された用途:
❌ 禁止された用途:
# Proper cleanup after use
docker-compose down -v --rmi all
コントリビューションを歓迎します。以下のガイドラインに従ってください:
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)このプロジェクトはMITライセンスの下でライセンスされています。詳細はLICENSEファイルを参照してください。
このプロジェクトがウェブセキュリティの学習に役立った場合は、スターを付けていただけると幸いです! ⭐