
Laboratorio Docker Next.js RSC volutamente vulnerabile per test locali di CVE-2025-55182 (React2Shell)
Lab Docker locale per ricerca di sicurezza autorizzata: React Server Components / Next.js App Router con uno stack nell'intervallo interessato da CVE-2025-55182 (React2Shell).
Usalo solo sulla tua macchina. Non esporre questo container a Internet.
| Componente | Versione | Nota |
|---|
| Next.js | 15.1.0 | Pre-patch; npm avvisa di problemi noti |
| React / react-dom | 19.2.0 | Nella linea 19.x interessata da questa CVE |
| Pipeline RSC | Integrata in Next | La deserializzazione viene esercitata tramite i react-server-dom-* compilati da Next |
L'app è una pagina minima App Router con una Server Action, così POST / con un header Next-Action si comporta come un target reale.
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
Apri http://localhost:3000 — dovresti vedere “RSC lab (volutamente vulnerabile)” e un piccolo modulo.
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 (oppure crea un tunnel attraverso Burp).POST / con Content-Type: multipart/form-data e il corpo dell'exploit basato sul protocollo Flight (campi multipart 0, 1, 2 come nei write-up pubblici / nei tuoi template).Next-Action
Next-Action da quella richiesta, oppureEsempio di header:
Next-Action: <action-id-from-intercepted-request>
Se un segnaposto generico non funziona, preferisci sempre l'id live dalla cronologia di Proxy dopo un invio legittimo.
Template multipart POST / pronti da incollare sono in burp-payloads/ (es. id, whoami, sleep basato sul tempo, segnaposto OOB). Vedi burp-payloads/README.md per un indice dei file. Sostituisci YOUR-COLLABORATOR-HOST nei template OOB prima di inviarli.
.
├── 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
Per la riproduzione della CVE, preferisci l'immagine Docker in modo che lo stack corrisponda alle dipendenze vulnerabili fissate.
Solo uso educativo / da laboratorio. Sei responsabile del rispetto delle leggi e delle politiche del luogo in cui operi. Nessuna garanzia.