Aplicación Next.js intencionalmente vulnerable que demuestra CVE-2025-55182 RCE a través de deserialización insegura en React Server Components. Incluye scripts de explotación e integración con escáneres para investigación y educación en seguridad.
⚠️ ADVERTENCIA: Esta aplicación es intencionalmente vulnerable solo con fines educativos y de investigación de seguridad. NO la implemente en producción ni la exponga a internet.
Esta es una aplicación Next.js vulnerable que demuestra CVE-2025-55182, una vulnerabilidad crítica de Ejecución Remota de Código en React Server Components. La aplicación está diseñada para parecer un dashboard profesional de hosting en la nube mientras es intencionalmente vulnerable para pruebas de seguridad y fines educativos.
Detalles del CVE:
curl_id.sh para probar la vulnerabilidadnpm install --legacy-peer-deps
npm run dev
La aplicación estará disponible en http://localhost:3000
El repositorio incluye curl_id.sh, una herramienta de línea de comandos basada en la plantilla de Nuclei para explotar CVE-2025-55182.
Uso:
# Execute id command (default)
./curl_id.sh -d localhost:3000 -c id
# Execute custom commands
./curl_id.sh -d localhost:3000 -c "whoami"
./curl_id.sh -d localhost:3000 -c "uname -a"
./curl_id.sh -d localhost:3000 -c "ls -la /tmp"
# Test remote domains (if vulnerable)
./curl_id.sh -d vulnapp.com -c id
Opciones:
-d, --domain: Dominio/URL objetivo (por defecto: http://localhost:3000)-c, --command: Comando a ejecutar (por defecto: id)git clone https://github.com/assetnote/react2shell-scanner.git
cd react2shell-scanner
pip install -r requirements.txt
python3 scanner.py -u http://localhost:3000
python3 scanner.py -u http://localhost:3000 --safe-check
La vulnerabilidad se puede explotar enviando una solicitud POST multipart manipulada al servidor con:
Next-Action: xX-Nextjs-Request-IdX-Nextjs-Html-Request-IdConsulte el repositorio react2shell-scanner para conocer la estructura exacta del payload.
La vulnerabilidad existe en el mecanismo de deserialización de React Server Components. Cuando Next.js procesa acciones del servidor, deserializa el payload de la solicitud. Las versiones vulnerables de React (19.0.0-19.2.0) no validan ni sanean adecuadamente los datos deserializados, permitiendo a los atacantes:
process.mainModule.require('child_process').execSync()X-Action-RedirectEl exploit utiliza un ataque de contaminación de prototipos en el proceso de deserialización JSON. La estructura del payload incluye:
then que contamina la cadena de prototipos_response con un campo _prefix que contiene código JavaScriptexecSync() y redirige la salida a la cabecera de respuestaPara corregir esta vulnerabilidad:
npm install react@latest react-dom@latest
npm install next@latest
npm audit fix
vuln-app-CVE-2025-55182/
├── app/
│ ├── actions.ts # Vulnerable server action
│ ├── layout.tsx # Root layout
│ └── page.tsx # Main dashboard page
├── node_modules/ # Dependencies
├── curl_id.sh # Exploit script for testing
├── package.json # Project dependencies (vulnerable versions)
├── tsconfig.json # TypeScript configuration
├── next.config.js # Next.js configuration
├── .gitignore # Git ignore rules
└── README.md # This file
Esta aplicación se crea únicamente con fines de investigación de seguridad y educativos.
Los autores y colaboradores no son responsables por el mal uso de este código. El acceso no autorizado a sistemas informáticos es ilegal y puede resultar en enjuiciamiento penal.
Este es un repositorio educativo. Las contribuciones que mejoren la documentación, agreguen mejores ejemplos o aumenten el valor educativo son bienvenidas.
Este proyecto se proporciona con fines educativos. Úselo bajo su propio riesgo.
Recuerde: Esta es una aplicación vulnerable. Úsela de manera responsable y solo en entornos controlados para investigación de seguridad y educación.