Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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
react2shell — Kit de herramientas de explotación RCE para CVE-2025-55182 y CVE-2025-66478 en React Server Components. Incluye múltiples variantes de exploit, scripts de detección, un servidor de pruebas vulnerable y un análisis técnico profundo de la vulnerabilidad de deserialización del protocolo Flight. | Kitploit
Herramientas/GitHubGitHub/freeqaz/react2shell
Análisis Dinámico (Sandboxing)Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónPapers e InvestigaciónAprendizaje y EducaciónDesarrollo de Payloads
GitHubfreeqaz/react2shell

react2shell

681810hace 9 mesesRevisado por Kitploit
Ver Repositorio

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 →

Acerca de

Kit de herramientas de explotación RCE para CVE-2025-55182 y CVE-2025-66478 en React Server Components. Incluye múltiples variantes de exploit, scripts de detección, un servidor de pruebas vulnerable y un análisis técnico profundo de la vulnerabilidad de deserialización del protocolo Flight.

Compartir

React2Shell: RCE 0-day en React Server Components

CVE-2025-55182 (React) y CVE-2025-66478 (Next.js)

Este repositorio contiene código de exploit únicamente para pruebas de seguridad autorizadas y fines educativos.

Ver también: Múltiples investigadores han publicado análisis de esta vulnerabilidad. Consulta la sección Referencias para obtener perspectivas adicionales, técnicas de explotación y métodos de detección.

¿Qué es?

El miércoles 3 de diciembre de 2025 se reveló públicamente una vulnerabilidad crítica de ejecución remota de código en React Server Components. El fallo, bautizado como «React2Shell», permite a un atacante no autenticado ejecutar código arbitrario en cualquier servidor que ejecute versiones vulnerables de React RSC o Next.js App Router mediante el envío de una única petición HTTP.

Dado lo omnipresente que se ha vuelto Next.js - impulsa una parte significativa de la web moderna - el impacto de esta vulnerabilidad es grave. Cualquier aplicación Next.js que use App Router (el valor predeterminado para proyectos nuevos desde Next.js 13) con RSC habilitado es vulnerable. Sin configuración especial. Sin endpoints específicos. Solo una petición POST a cualquier ruta.

La vulnerabilidad reside en el protocolo «Flight» de React, el formato de serialización utilizado para transferir datos entre servidor y cliente en React Server Components. La ausencia de una comprobación de hasOwnProperty durante la deserialización permite recorrer la cadena de prototipos, llegando en última instancia al constructor Function de JavaScript para ejecutar código controlado por el atacante.

El fallo existe en los paquetes react-server-dom-webpack, react-server-dom-turbopack y react-server-dom-parcel de React. Next.js, como principal consumidor de RSC, hereda la vulnerabilidad a través de su App Router.

¿Quién se ve afectado?

Muchos servicios son potencialmente vulnerables. Next.js es uno de los frameworks de React más populares, utilizado por empresas de todos los tamaños - desde startups hasta grandes corporaciones. App Router con React Server Components ha sido la arquitectura predeterminada para proyectos nuevos de Next.js desde la versión 13, lo que significa que la mayoría de los despliegues modernos de Next.js están afectados.

Cualquier aplicación que use:

  • React Server Components con paquetes react-server-dom-* vulnerables (19.0.0 - 19.2.0)
  • Next.js App Router versiones 15.x (anteriores a 15.0.5) y 16.x (anteriores a 16.0.7)

Esto incluye despliegues en producción en Vercel, AWS, infraestructura autoalojada y cualquier otro lugar donde se ejecuten aplicaciones Next.js App Router.

No afectados:

  • Aplicaciones Next.js Pages Router (sin RSC)
  • Versiones estables de Next.js 13.x y 14.x
  • Aplicaciones que usan solo renderizado en cliente de React
  • Despliegues en Edge Runtime (no hay process.mainModule disponible)

Versiones afectadas

React Server Components

PaqueteVulnerableParcheada
react-server-dom-webpack19.0.0, 19.1.0, 19.1.1, 19.2.019.0.1, 19.1.2, 19.2.1+
react-server-dom-turbopack19.0.0, 19.1.0, 19.1.1, 19.2.019.0.1, 19.1.2, 19.2.1+
react-server-dom-parcel19.0.0, 19.1.0, 19.1.1, 19.2.019.0.1, 19.1.2, 19.2.1+

Next.js

Línea de versiónVulnerableParcheada
15.0.x< 15.0.515.0.5+
15.1.x< 15.1.915.1.9+
15.2.x< 15.2.615.2.6+
15.3.x< 15.3.615.3.6+
15.4.x< 15.4.815.4.8+
15.5.x< 15.5.715.5.7+
16.0.x< 16.0.716.0.7+

Mitigación

Actualiza de inmediato. No hay soluciones alternativas.

Para aplicaciones Next.js:

npm install next@latest
# or
pnpm update next

Para uso directo de React RSC:

npm install react-server-dom-webpack@latest

Verifica tus versiones instaladas:

npm ls next react-server-dom-webpack react-server-dom-turbopack

Cómo funciona el exploit

Requisitos del exploit

  1. Un servidor que ejecute React Server Components vulnerable (mediante Next.js App Router o uso directo de RSC)
  2. Acceso de red para enviar una petición HTTP POST
  3. Eso es todo. Sin autenticación. Sin endpoint específico. Cualquier ruta funciona.

El ataque

Se han descubierto múltiples vectores de ataque para esta vulnerabilidad. El más común - y el que funciona sin ningún requisito previo - utiliza la contaminación de prototipos a través del sistema de referencias del protocolo Flight de React.

El exploit envía una petición POST multipart manipulada con una cabecera Next-Action. El payload abusa del sistema de referencias para:

  1. Recorrer la cadena de prototipos mediante $1:__proto__:then
  2. Construir un objeto «chunk» falso que imite la clase Chunk interna de React
  3. Engañar al deserializador para que llame al constructor Function de JavaScript
  4. Ejecutar código arbitrario cuando la función resultante se invoca como un thenable de Promise
POST / HTTP/1.1
Host: target.com
Content-Type: multipart/form-data; boundary=----Boundary
Next-Action: x

------Boundary
Content-Disposition: form-data; name="0"

{"then":"$1:__proto__:then","status":"resolved_model","value":"{...}","_response":{...}}
------Boundary
Content-Disposition: form-data; name="1"

"$@0"
------Boundary--

El código se ejecuta durante la deserialización, antes de que se realice cualquier validación del ID de acción. Esto significa que cualquier valor de la cabecera Next-Action activa la ruta de código vulnerable - no se requiere un ID de acción válido.

Existen otros vectores de ataque, incluidas las referencias a funciones $F y los gadgets de módulo directos. Estos suelen requerir un ID de acción válido. Consulta Vectores de ataque alternativos para más detalles.

La causa raíz

El protocolo Flight de React resuelve referencias como $1:path:to:value dividiendo por dos puntos y recorriendo el objeto:

// ReactFlightReplyServer.js - getOutlinedModel()
for (let i = 1; i < path.length; i++) {
  value = value[path[i]];  // No hasOwnProperty check!
}

La ironía: En la parte superior de este mismo archivo, línea 35:

import hasOwnProperty from 'shared/hasOwnProperty';

La protección se importó. Estaba disponible. Simplemente no se usó en el único bucle donde más importaba.

Esta única comprobación ausente permite que $1:__proto__:then recorra desde un objeto chunk, a través de la cadena de prototipos, hasta Chunk.prototype.then - una función que procesa objetos similares a Promise. Al crear un chunk falso con las propiedades adecuadas, controlamos qué código se ejecuta.

Reproducción local

Clona el servidor de pruebas vulnerable:

git clone https://github.com/freeqaz/react2shell
cd react2shell/vulnerable-next-server
pnpm install
pnpm dev

En otra terminal:

./detect.sh http://localhost:3443

Un servidor vulnerable devuelve HTTP 500 con E{"digest" en el cuerpo de la respuesta. Para demostrar RCE:

./exploit-redirect.sh http://localhost:3443 "id"

La salida del comando aparece en la respuesta. Para exploración interactiva:

./shell.sh http://localhost:3443

Contenido de este repositorio

Servidor de pruebas vulnerable

El directorio vulnerable-next-server/ contiene una aplicación Next.js 16.0.6 + React 19.2.0 preconfigurada para pruebas locales seguras. Se ejecuta en el puerto 3443 por defecto. Es una configuración mínima de App Router que demuestra que las configuraciones predeterminadas son vulnerables.

Scripts de exploit

Desarrollamos múltiples variantes de exploit para manejar diferentes escenarios:

Descargar herramienta