
RSC/Next.js RCE (CVE-2025-55182 & CVE-2025-66478)
Ferramenta de linha de comando para detectar CVE-2025-55182 e CVE-2025-66478 em aplicações Next.js que utilizam React Server Components.
Para detalhes técnicos sobre a vulnerabilidade e a metodologia de detecção, consulte nosso post no blog: https://slcyber.io/research-center/high-fidelity-detection-mechanism-for-rsc-next-js-rce-cve-2025-55182-cve-2025-66478
Por padrão, o scanner envia uma requisição POST multipart elaborada contendo um payload de prova de conceito (PoC) de RCE que executa uma operação matemática determinística (41*271 = 11111). Hosts vulneráveis retornam o resultado no cabeçalho de resposta X-Action-Redirect como /login?a=11111.
O scanner testa o caminho raiz (/) por padrão. Use --path ou --path-file para testar caminhos personalizados. Se não for vulnerável, ele segue redirecionamentos do mesmo host (por exemplo, para ) e testa o destino do redirecionamento. Redirecionamentos entre origens (cross-origin) não são seguidos.
//en/A flag --safe-check utiliza um método alternativo de detecção que depende de indicadores de canal lateral (código de status 500 com um digest de erro específico) sem executar código no alvo. Use este modo quando a execução de RCE não for desejada.
A flag --waf-bypass adiciona dados aleatórios ("lixo") ao corpo da requisição multipart. Isso pode ajudar a evadir a inspeção de conteúdo de WAFs que analisam apenas a primeira porção do corpo da requisição. O tamanho padrão é 128KB, configurável via --waf-bypass-size. Quando o bypass de WAF está habilitado, o timeout é automaticamente aumentado para 20 segundos (a menos que seja definido explicitamente).
A flag --vercel-waf-bypass utiliza uma variante de payload alternativa projetada especificamente para contornar as proteções do WAF da Vercel. Isso usa uma estrutura multipart diferente, com um campo de formulário adicional.
A flag --windows altera o payload do shell Unix (echo $((41*271))) para PowerShell (powershell -c "41*271") para alvos que executam Windows.
pip install -r requirements.txt
Escanear um único host:
python3 scanner.py -u https://example.com
Escanear uma lista de hosts:
python3 scanner.py -l hosts.txt
Escanear com múltiplas threads e salvar resultados:
python3 scanner.py -l hosts.txt -t 20 -o results.json
Escanear com cabeçalhos personalizados:
python3 scanner.py -u https://example.com -H "Authorization: Bearer token" -H "Cookie: session=abc"
Usar detecção segura por canal lateral:
python3 scanner.py -u https://example.com --safe-check
Escanear alvos Windows:
python3 scanner.py -u https://example.com --windows
Escanear com bypass de WAF:
python3 scanner.py -u https://example.com --waf-bypass
Escanear caminhos personalizados:
python3 scanner.py -u https://example.com --path /_next
python3 scanner.py -u https://example.com --path /_next --path /api
python3 scanner.py -u https://example.com --path-file paths.txt
-u, --url URL única para verificar
-l, --list Arquivo contendo hosts (um por linha)
-t, --threads Número de threads concorrentes (padrão: 10)
--timeout Timeout da requisição em segundos (padrão: 10)
-o, --output Arquivo de saída para os resultados (JSON)
--all-results Salvar todos os resultados, não apenas hosts vulneráveis
-k, --insecure Desabilitar verificação de certificado SSL
-H, --header Cabeçalho personalizado (pode ser usado várias vezes)
-v, --verbose Exibir detalhes da resposta para hosts vulneráveis
-q, --quiet Exibir apenas hosts vulneráveis
--no-color Desabilitar saída colorida
--safe-check Usar detecção segura por canal lateral em vez de PoC de RCE
--windows Usar payload PowerShell do Windows em vez de shell Unix
--waf-bypass Adicionar dados aleatórios para evadir inspeção de conteúdo do WAF
--waf-bypass-size Tamanho dos dados aleatórios em KB (padrão: 128)
--path Caminho personalizado para testar (pode ser usado várias vezes)
--path-file Arquivo contendo caminhos para testar (um por linha)
O PoC de RCE foi originalmente divulgado por @maple3142 — somos incrivelmente gratos pelo seu trabalho em publicar um PoC funcional.
Esta ferramenta foi inicialmente construída como uma forma segura de detectar o RCE. Essa funcionalidade ainda está disponível via --safe-check, o modo de "detecção segura".
Os resultados são exibidos no terminal. Ao usar -o, os hosts vulneráveis são salvos em um arquivo JSON contendo a requisição e a resposta HTTP completas para verificação.