
Mecanismo de Detecção de Alta Fidelidade para RCE em RSC/Next.js (CVE-2025-55182 & CVE-2025-66478)
Uma ferramenta de linha de comando para detectar CVE-2025-55182 e CVE-2025-66478 em aplicações Next.js que usam React Server Components.
Para detalhes técnicos sobre a vulnerabilidade e a metodologia de detecção, veja 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 criada contendo um payload de prova de conceito 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 de origem cruzada não são seguidos.
//en/A flag --safe-check usa um método de detecção alternativo que depende de indicadores de canal lateral (código de status 500 com digest de erro específico) sem executar código no alvo. Use este modo quando a execução do RCE não for desejada.
A flag --waf-bypass anexa dados aleatórios de lixo ao corpo da requisição multipart. Isso pode ajudar a evadir a inspeção de conteúdo do WAF que analisa apenas a primeira parte do corpo da requisição. O tamanho padrão é 128KB, configurável via --waf-bypass-size. Quando o bypass do WAF está ativado, o timeout é automaticamente aumentado para 20 segundos (a menos que seja definido explicitamente).
A flag --vercel-waf-bypass usa uma variante de payload alternativa especificamente projetada para contornar as proteções do WAF do Vercel. Isso usa uma estrutura multipart diferente com um campo de formulário adicional.
A flag --windows troca o payload do shell Unix (echo $((41*271))) para PowerShell (powershell -c "41*271") para alvos rodando no Windows.
pip install -r requirements.txt
Digitalize um único host:
python3 scanner.py -u https://example.com
Digitalize uma lista de hosts:
python3 scanner.py -l hosts.txt
Digitalize com múltiplas threads e salve resultados:
python3 scanner.py -l hosts.txt -t 20 -o results.json
Digitalize com cabeçalhos personalizados:
python3 scanner.py -u https://example.com -H "Authorization: Bearer token" -H "Cookie: session=abc"
Use detecção segura de canal lateral:
python3 scanner.py -u https://example.com --safe-check
Digitalize alvos Windows:
python3 scanner.py -u https://example.com --windows
Digitalize com bypass de WAF:
python3 scanner.py -u https://example.com --waf-bypass
Digitalize 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 Single URL to check
-l, --list File containing hosts (one per line)
-t, --threads Number of concurrent threads (default: 10)
--timeout Request timeout in seconds (default: 10)
-o, --output Output file for results (JSON)
--all-results Save all results, not just vulnerable hosts
-k, --insecure Disable SSL certificate verification
-H, --header Custom header (can be used multiple times)
-v, --verbose Show response details for vulnerable hosts
-q, --quiet Only output vulnerable hosts
--no-color Disable colored output
--safe-check Use safe side-channel detection instead of RCE PoC
--windows Use Windows PowerShell payload instead of Unix shell
--waf-bypass Add junk data to bypass WAF content inspection
--waf-bypass-size Size of junk data in KB (default: 128)
--path Custom path to test (can be used multiple times)
--path-file File containing paths to test (one per line)
O PoC de RCE foi originalmente divulgado por @maple3142 -- somos incrivelmente gratos pelo trabalho deles em publicar um PoC funcional.
Esta ferramenta foi originalmente 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 impressos no terminal. Ao usar -o, os hosts vulneráveis são salvos em um arquivo JSON contendo a requisição HTTP completa e a resposta para verificação.