Aplicación Next.js intencionalmente vulnerable para investigación de seguridad CVE-2025-55182 y desafíos CTF
⚠️ SOLO CON FINES EDUCATIVOS: Esta es una aplicación intencionalmente vulnerable diseñada para investigación de seguridad autorizada y desafíos CTF. NO utilice estas técnicas en sistemas no autorizados.
Una aplicación Next.js 15.1.6 deliberadamente vulnerable que demuestra CVE-2025-55182 (React2Shell) - una vulnerabilidad crítica de Ejecución Remota de Código en los Componentes del Servidor React. Diseñada para investigadores de seguridad, testers de penetración y estudiantes para practicar técnicas de explotación en un entorno seguro y aislado.
CVE-2025-55182, también conocido como React2Shell, es una vulnerabilidad crítica de Ejecución Remota de Código (RCE) que afecta a los Componentes del Servidor React en Next.js.
La vulnerabilidad se origina en el manejo inadecuado de datos serializados en las Server Actions de React. Los atacantes pueden crear payloads maliciosos que eluden la validación y ejecutan código arbitrario en el servidor a través de:
Antes de comenzar, asegúrate de tener instalado lo siguiente:
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
⚠️ Advertencia: La configuración manual sin Docker NO se recomienda para investigación de seguridad. Utilice siempre Docker para el aislamiento.
# 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
Una vez en ejecución, navega a:
PunchingBag contiene 5 banderas ocultas que ponen a prueba diferentes técnicas de explotación:
| Bandera | Desafío | Dificultad | Puntos |
|---|---|---|---|
| 🚩 Bandera 1 | Reconocimiento Básico | Fácil | 100 |
| 🚩 Bandera 2 | Explotación de Server Action | Medio | 200 |
| 🚩 Bandera 3 | Bypass de Acceso Administrador | Medio | 300 |
| 🚩 Bandera 4 | Ejecución Remota de Código | Difícil | 400 |
| 🚩 Bandera 5 | Secretos del Entorno | Medio | 250 |
Todas las banderas siguen el formato: CTF{description_here}
# Explore the application
curl http://localhost:3000
# Check available endpoints
curl http://localhost:3000/dashboard
curl http://localhost:3000/admin
Intercepta los envíos de formularios y modifica el payload:
// 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}'
Revisa .env.local para credenciales o explota la autenticación:
# Default admin token (intentionally weak)
Username: admin
Token: super_secret_admin_key_12345
En el componente vulnerable utiliza la función de ejecución de comandos:
# 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
Esta aplicación es INTENCIONALMENTE VULNERABLE y está diseñada para:
✅ Usos Autorizados:
❌ Usos Prohibidos:
# Proper cleanup after use
docker-compose down -v --rmi all
¡Las contribuciones son bienvenidas! Por favor, sigue estas pautas:
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.
Si este proyecto te ayudó a aprender sobre seguridad web, ¡considera darle una estrella! ⭐
Hecho con 🥊 para Investigación de Seguridad
Recuerda: Un gran poder conlleva una gran responsabilidad. Usa tus habilidades ética o no éticamente, es broma😁, nunca las uses de manera no ética.
Reportar un Error · Solicitar una Funcionalidad · Documentación