
Laboratorio Docker de Next.js RSC intencionalmente vulnerable para pruebas locales del CVE-2025-55182 (React2Shell)
Laboratorio Docker local para investigación de seguridad autorizada: React Server Components / Next.js App Router con un stack en el rango afectado por CVE-2025-55182 (React2Shell).
Úselo solo en su propia máquina. No exponga este contenedor a internet.
| Componente | Versión | Nota |
|---|---|---|
| Next.js | 15.1.0 | Pre-parche; npm advierte sobre problemas conocidos |
| React / react-dom | 19.2.0 | En la línea 19.x afectada por este CVE |
| Pipeline RSC | Empaquetado en Next | La deserialización se ejerce a través del react-server-dom-* compilado de Next |
La aplicación es una página mínima de App Router con una Server Action para que POST / con un encabezado Next-Action se comporte como un objetivo real.
git clone https://github.com/l0lsec/cve-2025-55182-lab.git
cd cve-2025-55182-lab
# Build and run in the background
docker compose up --build -d
Abra http://localhost:3000 — debería ver “RSC lab (intentionally vulnerable)” y un pequeño formulario.
curl -sS -o /dev/null -w "%{http_code}\n" http://127.0.0.1:3000/
# expect: 200
docker compose logs -f
docker compose down
http://localhost:3000 (o haga un túnel a través de Burp).POST / con Content-Type: multipart/form-data y su cuerpo de exploit de protocolo Flight (campos multipart 0, 1, 2 como en los write-ups públicos / sus plantillas).Next-Action
Next-Action de esa solicitud, oForma de ejemplo del encabezado:
Next-Action: <action-id-from-intercepted-request>
Si un marcador de posición genérico no funciona, prefiera siempre el id vivo del historial de Proxy después de un envío legítimo.
Las plantillas multipart POST / listas para pegar se encuentran en burp-payloads/ (ej. id, whoami, sleep basado en tiempo, marcadores OOB). Consulte burp-payloads/README.md para un índice de archivos. Reemplace YOUR-COLLABORATOR-HOST en las plantillas OOB antes de enviar.
.
├── Dockerfile # Multi-stage build, Next standalone, port 3000
├── docker-compose.yml # Maps host 3000 → container 3000
├── burp-payloads/ # Raw *.http for Burp Repeater + index README
├── app/
│ ├── layout.tsx
│ └── page.tsx # Server Action + lab UI
├── public/
├── package.json
├── package-lock.json
└── next.config.ts # output: "standalone"
npm install
npm run dev
# http://localhost:3000
Para la reproducción del CVE, prefiera la imagen Docker para que el stack coincida con las dependencias vulnerables fijadas.
Solo para uso educativo / de laboratorio. Usted es responsable de cumplir con las leyes y políticas donde opera. Sin garantía.