Application Next.js volontairement vulnérable pour la recherche en sécurité CVE-2025-55182 et les défis CTF.
⚠️ UNIQUEMENT À DES FINS ÉDUCATIVES : Cette application est volontairement vulnérable et conçue pour la recherche en sécurité autorisée et les défis CTF. N'utilisez pas ces techniques sur des systèmes non autorisés.
Une application Next.js 15.1.6 volontairement vulnérable qui illustre CVE-2025-55182 (React2Shell) - une vulnérabilité critique d'exécution de code à distance (RCE) dans les React Server Components. Conçue pour les chercheurs en sécurité, les testeurs d'intrusion et les étudiants afin de s'entraîner aux techniques d'exploitation dans un environnement sûr et isolé.
CVE-2025-55182, également connue sous le nom de React2Shell, est une vulnérabilité critique d'exécution de code à distance (RCE) affectant les React Server Components dans Next.js.
La vulnérabilité provient d'une gestion inappropriée des données sérialisées dans les React Server Actions. Les attaquants peuvent élaborer des charges utiles malveillantes qui contournent la validation et exécutent du code arbitraire sur le serveur via :
Avant de commencer, assurez-vous d'avoir installé les éléments suivants :
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
⚠️ Avertissement : L'installation manuelle sans Docker n'est PAS recommandée pour la recherche en sécurité. Utilisez toujours Docker pour l'isolation.
# 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
Une fois lancée, accédez à :
PunchingBag contient 5 drapeaux cachés qui testent différentes techniques d'exploitation :
| Drapeau | Défi | Difficulté | Points |
|---|---|---|---|
| 🚩 Drapeau 1 | Reconnaissance de base | Facile | 100 |
| 🚩 Drapeau 2 | Exploitation d'une Server Action | Moyen | 200 |
| 🚩 Drapeau 3 | Contournement de l'accès admin | Moyen | 300 |
| 🚩 Drapeau 4 | Exécution de code à distance | Difficile | 400 |
| 🚩 Drapeau 5 | Secrets d'environnement | Moyen | 250 |
Tous les drapeaux suivent le format : CTF{description_here}
# Explore the application
curl http://localhost:3000
# Check available endpoints
curl http://localhost:3000/dashboard
curl http://localhost:3000/admin
Interceptez les soumissions de formulaire et modifiez la charge utile :
// 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}'
Consultez .env.local pour trouver des identifiants ou exploitez l'authentification :
# Default admin token (intentionally weak)
Username: admin
Token: super_secret_admin_key_12345
Sur le composant vulnérable, utilisez la fonctionnalité d'exécution de commandes :
# 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
Cette application est VOLONTAIREMENT VULNÉRABLE et conçue pour :
✅ Utilisations autorisées :
❌ Utilisations interdites :
# Proper cleanup after use
docker-compose down -v --rmi all
Les contributions sont les bienvenues ! Veuillez suivre ces directives :
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)Ce projet est sous licence MIT - consultez le fichier LICENSE pour plus de détails.
Si ce projet vous a aidé à en apprendre davantage sur la sécurité web, pensez à lui attribuer une étoile ! ⭐
Conçu avec 🥊 pour la recherche en sécurité
Souvenez-vous : un grand pouvoir implique de grandes responsabilités. Utilisez vos compétences de manière éthique ou non éthique, je plaisante 😁, ne les utilisez jamais de manière non éthique.
Signaler un bug · Demander une fonctionnalité · Documentation