
Script NSE do Nmap para escanear React2Shell (CVE-2025-55182)
Script NSE do Nmap para escanear React2Shell (CVE-2025-55182)
Aviso de isenção de responsabilidade O código a seguir é fornecido apenas para fins educacionais e de pesquisa. Qualquer uso deste script é de inteira responsabilidade e critério do usuário.
Este scanner pode gerar falsos positivos ou resultados inconclusivos e, portanto, é dever do usuário validar e confirmar qualquer achado relatado. O autor não assume responsabilidade por uso indevido, danos ou consequências não intencionais decorrentes da execução deste código.
Use esta ferramenta apenas em ambientes onde você tenha autorização explícita. Testes não autorizados de sistemas são estritamente proibidos e podem ser ilegais.
Autor: Kevin Leon
Categorias: discovery, vuln, intrusive
Tipo de Script: Nmap NSE
nmap --script http-vuln-cve2025-55182.nse -p- <target>
nmap --script http-vuln-cve2025-55182.nse -p3000,3001,3002 <target>
nmap --script http-vuln-cve2025-55182.nse \
--script-args=http-vuln-cve2025-55182.waf_bypass=true <target>
PORT STATE SERVICE
3000/tcp open ppp
| http-vuln-cve2025-55182:
| VULNERABLE:
| React2Shell Remote Code Execution (RCE)
| State: VULNERABLE
| IDs: CVE:2025-55182
| Risk factor: High CVSS: 10.0
| Disclosure date: 2025-12-03
| References:
| https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
| https://nvd.nist.gov/vuln/detail/CVE-2025-55182
| https://github.com/assetnote/react2shell-scanner
|_ https://github.com/msanft/CVE-2025-55182
Antes de tentar a exploração, o script verifica se o alvo provavelmente está executando:
Métodos de detecção
O script realiza uma requisição inicial:
http.get(host, port, "/")
e inspeciona:
X-Powered-By: next.jsX-Powered-By: react_next
(indicativo de ativos estáticos do Next.js)Então o alvo é considerado potencialmente vulnerável.
Geração do Boundary Multipart
O script gera um boundary aleatório no formato WebKit:
----WebKitFormBoundary<random 16 chars>
Isso é usado para o exploit multipart/form-data.
Dependendo dos argumentos do usuário:
Payload de Exploit Simples
Payload de Bypass de WAF
--script-args=http-vuln-cve2025-55182.waf_bypass=true
Inclui mais campos e ofuscação para contornar o middleware.
Dentro do payload, o script injeta:
process.mainModule.require('child_process')
.execSync('echo $((41*271))')
Este comando resulta em 11111 e é usado posteriormente para verificar a exploração por meio da detecção do redirect digest.
O script tenta explorar a vulnerabilidade enviando via POST o payload criado para vários endpoints RSC conhecidos:
/
/_action
/api/action
/api
/_next/data
/__rsc
/action
/server
/server/action
Cada requisição é enviada como:
http.post(host, port, path, header, payload)
Caso A — Erro de Servidor HTTP 500
Uma falha de desserialização indica possível vulnerabilidade:
Caso B — Presença do Digest NEXT_REDIRECT
O payload força um redirecionamento no lado do servidor:
NEXT_REDIRECT;push;/login?a=11111;307;
O script verifica nos cabeçalhos da resposta por:
11111Se encontrado → Muito provavelmente vulnerável
Com base no resultado da detecção, o script preenche um relatório de vulnerabilidade padrão do NSE:
VULNERABLE_VULN ┌──────────────────────┐
│ Start NSE Script │
└─────────────┬────────┘
│
▼
┌────────────────────┐
│ Request "/" │
│ Check headers/body │
└──────────┬─────────┘
│Yes
▼
┌────────────────────┐
│ React/Next.js Detected? ── No ─▶ Exit (Not Vulnerable)
└──────────┬─────────┘
│Yes
▼
┌────────────────────┐
│ Build multipart │
│ exploit payload │
└──────────┬─────────┘
▼
┌─────────────────────────────────┐
│ Loop through RSC endpoints │
│ Send POST exploit payload │
└──────────┬──────────────────────┘
│
┌─────────┴──────────────────────────────┐
▼ ▼
┌───────────────┐ ┌───────────────────┐
│ HTTP 500? │ YES │ Redirect digest? │ YES
└───────┬────────┘ └────────┬──────────┘
│NO │NO
▼ ▼
Continue testing Continue testing
│ │
└──────────────────────────────┬─────────┘
▼
┌────────────────────┐
│ Vulnerable? │
└──────────┬─────────┘
▼
Generate Report
Este script fornece um mecanismo de detecção completo, automatizado e seguro para a vulnerabilidade React2Shell de alto impacto. Sua abordagem de validação em camadas garante uma detecção confiável, minimizando falsos positivos.