
Prueba de concepto funcional (PoC) para CVE-2025-55182 (React2Shell) - Ejecución remota de código no autenticada en Next.js 15.0.0 a través de React Server Components
⚠️ SOLO CON FINES EDUCATIVOS
Este repositorio se crea estrictamente con fines educativos y de investigación. Demuestra una vulnerabilidad crítica en los Componentes del Servidor React (Next.js) para ayudar a los desarrolladores a comprender los riesgos y la importancia de actualizar sus dependencias.
NO UTILICE ESTE CÓDIGO EN PRODUCCIÓN O CONTRA SISTEMAS QUE NO LE PERTENEZCAN.
Este proyecto reproduce CVE-2025-55182 (también conocido como "React2Shell"), una vulnerabilidad de Ejecución Remota de Código (RCE) que afecta a los Componentes del Servidor React en aplicaciones Next.js.
multipart/form-data manipulada que explota la lógica de deserialización de los Componentes del Servidor React para ejecutar código JavaScript arbitrario en el servidor.
app/page.js: Contiene el Panel de Explotación Interactivo. Este Componente Cliente le permite ejecutar comandos RCE directamente desde el navegador.app/actions.js: Contiene una Acción de Servidor estándar. La vulnerabilidad reside en la lógica de análisis del framework antes de que se ejecute esta acción.exploit.js: Un script independiente de Node.js para demostrar el exploit de forma programática.Clonar el repositorio:
git clone https://github.com/pkrasulia/CVE-2025-55182-NextJS-RCE-PoC.git
cd react-cve-test
(Opcional) Usar la versión correcta de Node.js:
nvm use
Instalar dependencias (esto instalará las versiones vulnerables):
npm ci --legacy-peer-deps
# O
npm install --force
Iniciar el servidor de desarrollo:
npm run dev
El servidor debería iniciarse en http://localhost:3000.
http://localhost:3000 en su navegador.whoami, ls -la o cat package.json).Puede ejecutar el script de exploit directamente desde su terminal:
# Basic usage
node exploit.js http://localhost:3000 "whoami"
# Open Calculator (Linux) - use '&' to run in background
node exploit.js http://localhost:3000 "gnome-calculator &"
Para corregir esta vulnerabilidad en sus propios proyectos:
npm install next@latest react@latest react-dom@latest
El autor no se hace responsable del mal uso de esta información. Este proyecto está destinado a ayudar a investigadores de seguridad y desarrolladores a mejorar la seguridad de sus aplicaciones.