
Laboratório Docker Next.js RSC intencionalmente vulnerável para testes locais do CVE-2025-55182 (React2Shell)
Laboratório Docker local para pesquisa de segurança autorizada: React Server Components / Next.js App Router com uma pilha na faixa afetada pela CVE-2025-55182 (React2Shell).
Use apenas em sua própria máquina. Não exponha este contêiner para a internet.
| Componente | Versão | Nota |
|---|
| Next.js | 15.1.0 | Pré-patch; npm avisa sobre problemas conhecidos |
| React / react-dom | 19.2.0 | Na linha 19.x afetada por esta CVE |
| RSC pipeline | Empacotado no Next | A desserialização é exercida através do react-server-dom-* compilado do Next |
O aplicativo é uma página mínima do App Router com uma Server Action para que POST / com um cabeçalho Next-Action se comporte como um alvo 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 — você deve ver “RSC lab (intencionalmente vulnerável)” e um pequeno formulário.
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 (ou faça um túnel através do Burp).POST / com Content-Type: multipart/form-data e seu corpo de exploit do protocolo Flight (campos multipart 0, 1, 2 como em write-ups públicos / seus modelos).Next-Action
Next-Action dessa requisição, ouExemplo de formato do cabeçalho:
Next-Action: <action-id-from-intercepted-request>
Se um placeholder genérico não funcionar, sempre prefira o id vivo do histórico do Proxy após um envio legítimo.
Modelos multipart POST / prontos para colar estão em burp-payloads/ (ex.: id, whoami, sleep baseado em tempo, placeholders OOB). Veja burp-payloads/README.md para um índice de arquivos. Substitua YOUR-COLLABORATOR-HOST nos modelos OOB antes de enviar.
.
├── Dockerfile # Construção em múltiplos estágios, Next standalone, porta 3000
├── docker-compose.yml # Mapeia host 3000 → container 3000
├── burp-payloads/ # *.http bruto para Burp Repeater + README índice
├── app/
│ ├── layout.tsx
│ └── page.tsx # Server Action + UI do laboratório
├── public/
├── package.json
├── package-lock.json
└── next.config.ts # output: "standalone"
npm install
npm run dev
# http://localhost:3000
Para reprodução da CVE, prefira a imagem Docker para que a pilha corresponda às dependências vulneráveis fixadas.
Apenas para uso educacional / em laboratório. Você é responsável por cumprir as leis e políticas onde atua. Sem garantia.