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
CVE-2025-55182 — Investigación de tesis de maestría sobre CVE-2025-55182 (React2Shell). Marco de explotación modular con 6 escenarios de ataque (RCE, exfiltración, desfiguración), shell inversa interactiva y un laboratorio vulnerable completo para estudiar la contaminación de prototipos y la deserialización insegura en React Server Components. | Kitploit
Herramientas/GitHubGitHub/devianntsec/cve-2025-55182
Frameworks de ExploitsAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPost-ExplotaciónPruebas de PenetraciónPapers e InvestigaciónAprendizaje y EducaciónHerramienta de Acceso Remoto
Desarrollo de Payloads
Labs y Práctica
GitHubdevianntsec/cve-2025-55182

CVE-2025-55182

Ver Repositorio
113hace 5 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 →

Acerca de

Investigación de tesis de maestría sobre CVE-2025-55182 (React2Shell). Marco de explotación modular con 6 escenarios de ataque (RCE, exfiltración, desfiguración), shell inversa interactiva y un laboratorio vulnerable completo para estudiar la contaminación de prototipos y la deserialización insegura en React Server Components.

Compartir
# CVE-2025-55182 — React2Shell: Exploit Avanzado e Investigación de Tesis de Máster

[![Platform](https://img.shields.io/badge/Platform-Web%20Application-blue)](https://nvd.nist.gov/vuln/detail/CVE-2025-55182)
[![Language](https://img.shields.io/badge/Language-Python-informational)](https://github.com/devianntsec)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![Research](https://img.shields.io/badge/Research-Master%27s%20Thesis-purple)](https://github.com/devianntsec)
[![CVSS](https://img.shields.io/badge/CVSS-10.0%20(Critical)-brightred)](https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?vector=AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)

> **Deserialización de datos no confiables + contaminación de prototipos en React Server Components**  
> Ejecución remota de código sin autenticación a través de Next.js Server Actions  
> Versiones afectadas: React 19.0.0 - 19.2.0 · Parche: React 19.0.1 / 19.1.2 / 19.2.1 (3 de diciembre de 2025)

---

<div align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/24649/c81fdc86c7459949f7c5c679634f41f058a1b1314a7b9033aba647f66f720d2a.png" width="400"/> 
  
  <p><em>Demostración del exploit avanzado: comandos básicos de RCE, shell interactiva y múltiples vectores de ataque contra una aplicación Next.js vulnerable</em></p>
  
</div>

## Descripción

Este repositorio contiene mi **investigación de Tesis de Máster** sobre **CVE-2025-55182**, una vulnerabilidad de **Ejecución Remota de Código** de severidad Crítica (CVSS v3.1: 10.0) en React Server Components.

La vulnerabilidad se origina en un **mecanismo de deserialización inseguro** dentro del protocolo React Flight. Al procesar Server Actions, Next.js deserializa los payloads multipart entrantes sin una validación adecuada. Un atacante puede crear un payload malicioso que contamina la cadena de prototipos e inyecta JavaScript arbitrario, que se ejecuta en el servidor a través del constructor `Function` (y posteriormente mediante `child_process.execSync()`).

> **Nota sobre CVE-2025-66478:** Vercel emitió un CVE paralelo para rastrear el impacto específico de esta misma vulnerabilidad en Next.js. Debido a que Next.js incluye React como dependencia interna (vendored), muchos escáneres de dependencias no lo detectan automáticamente como vulnerable. La Base de Datos Nacional de Vulnerabilidades de EE. UU. (NVD) rechazó oficialmente CVE-2025-66478 por ser un duplicado de CVE-2025-55182, aunque continúa apareciendo en el aviso de seguridad de Vercel.

> **Vulnerabilidades posteriores:** El equipo de React reveló posteriormente dos problemas adicionales presentes en las versiones iniciales del parche (19.0.1, 19.1.2, 19.2.1): **CVE-2025-55184** (Denegación de Servicio, CVSS 7.5) y **CVE-2025-55183** (Exposición de Código Fuente, CVSS 5.3). Los usuarios deben actualizar a **19.0.2, 19.1.3 o 19.2.2** para solucionar los tres.

### Mi contribución

| Aspecto | Descripción |
|--------|-------------|
| **Cuatro módulos de ataque** | Eliminar proyectos, desfigurar el sitio web, robar variables de entorno, apagar servidores |
| **Shell interactiva** | Shell persistente con comandos especiales y capacidad de restauración |
| **Exfiltración estable** | Lectura línea por línea para evadir las limitaciones de tamaño de las cabeceras HTTP |
| **Script de restauración** | Restauración segura del laboratorio tras los ataques |
| **Documentación académica** | Causa raíz, desglose del payload y cronología de la vulnerabilidad |

---

## Estructura del Repositorio

```
CVE-2025-55182/
├── README.md                        # This file
├── LICENSE                          # MIT License
│
├── exploit/
│   ├── exploit-explanation.md       # Exploit usage documentation
│   └── react2shell.py               # Main exploit — 4 attack modules + interactive shell
│
├── vulnerable-app/                  # Vulnerable Next.js application
│   ├── README.md                    # Original vulnapp credits
│   ├── package.json                 # React 19.0.0 (vulnerable)
│   ├── app/                         # Application source code
│   ├── curl_id.sh                   # Original exploit script (by zack0x01)
│   └── scripts/
│       └── restore.sh               # Restoration script (my contribution)
│
└── docs/
    ├── screenshots/                 # Exploitation demonstrations
    │   ├── 01-app-initial.png
    │   ├── 02-rce-basic.png
    │   ├── 03-interactive-shell.png
    │   ├── 04-no-payload.png
    │   ├── 05-delete-result.png
    │   ├── 06-deface.png
    │   ├── 07-shutdown-servers.png
    │   ├── 08-restore-from-script.png
    │   └── 09-restore-from-interactive-shell.png
    │
    └── analysis/
        ├── 01-root-cause.md         # Vulnerability root cause analysis
        ├── 02-payload-breakdown.md  # Payload structure and execution flow
        └── 03-timeline.md           # CVE timeline
```

---

## Inicio rápido

### Requisitos previos

- Node.js 18+ y npm
- Python 3.9+
- Aplicación Next.js vulnerable (incluida en `vulnerable-app/`)
- Se recomienda una máquina virtual aislada para las pruebas

### Paso 1 — Iniciar la aplicación vulnerable

```bash
cd vulnerable-app
npm install --legacy-peer-deps
npm run dev
# App available at http://localhost:3000
```

### Paso 2 — Ejecutar el exploit

```bash
cd ../exploit

# Check if target is vulnerable
python3 react2shell.py -u http://localhost:3000 --check

# Execute single command
python3 react2shell.py -u http://localhost:3000 -c "whoami"

# Interactive shell mode
python3 react2shell.py -u http://localhost:3000 -i
```

---

## Módulos de ataque

| Módulo | Comando | Descripción | Impacto |
|--------|---------|-------------|--------|
| **Eliminar Proyectos** | `--delete-projects` | Elimina todos los proyectos del panel | Destrucción de datos |
| **Desfigurar (Deface)** | `--deface "message"` | Reemplaza la página principal | Desfiguración |
| **Robar Entorno** | `--steal-env` | Roba las variables de entorno | Exfiltración |
| **Apagar Servidores** | `--shutdown-servers` | Apaga todos los servidores | Denegación de Servicio |

---

## Descripción técnica

### Causa raíz de la vulnerabilidad

React Server Components utiliza un mecanismo personalizado de serialización/deserialización (el protocolo «Flight») para enviar datos de componentes del servidor al cliente. Al procesar server actions, el servidor deserializa los payloads entrantes **sin una validación adecuada**.

El fallo principal es la confianza en el comportamiento: el deserializador comprueba `typeof obj.then === 'function'` para identificar Promises, sin verificar que la propiedad pertenezca directamente al objeto. Esto permite a un atacante envenenar `Object.prototype.then`, haciendo que cualquier objeto plano parezca un thenable.

Un atacante puede crear un payload malicioso que:

1. **Contamina la cadena de prototipos** usando `__proto__:then`
2. **Redirige la resolución** al constructor `Function` mediante `$1:constructor:constructor`
3. **Ejecuta JavaScript arbitrario** a través de `new Function(_prefix)`
4. **Ejecuta comandos del sistema** mediante `process.mainModule.require('child_process').execSync()`
5. **Exfiltra la salida** a través de la cabecera de respuesta HTTP `X-Action-Redirect`

```
User-mode (unauthenticated)
  │
  ├─ POST / (Next.js Server Action endpoint)
  │    ├─ Headers: Next-Action: x
  │    └─ Multipart body with malicious JSON
  │
  └─ React Flight deserializer processes payload
       └─ Prototype pollution via __proto__:then
            └─ Function constructor reached via $1:constructor:constructor
                 └─ new Function(_prefix) executes attacker's JavaScript
                      └─ execSync() runs system command
                           └─ Output embedded in NEXT_REDIRECT error
                                └─ Next.js converts to X-Action-Redirect header
```

### Aclaración sobre el alcance

La vulnerabilidad afecta a cualquier aplicación Next.js que utilice el **App Router con React Server Components** — la configuración predeterminada desde Next.js 14. Las Server Actions definidas explícitamente **no son necesarias**; basta con la mera presencia de los paquetes RSC afectados.

### Por qué es importante

Esta vulnerabilidad permite a un atacante no autenticado:

- Ejecutar comandos arbitrarios en el servidor
- Robar variables de entorno y credenciales
- Modificar o eliminar datos de la aplicación
- Usar el servidor como punto de pivote para ataques posteriores

### Cadena de ataque

```
1. [ANY]    Send crafted multipart POST to any Server Action endpoint
2. [SERVER] React deserializer processes malicious JSON
3. [SERVER] Prototype pollution poisons Object.prototype.then
4. [SERVER] Plain object treated as thenable; Function constructor reached
5. [SERVER] new Function(_prefix) executes attacker's arbitrary JavaScript
6. [SERVER] execSync() runs system command; output captured
7. [SERVER] Output embedded in NEXT_REDIRECT error digest
8. [SERVER] Next.js returns X-Action-Redirect header with URL-encoded output
9. [ATTACKER] Extract and URL-decode command result from header
```

---

## Pruebas empíricas

Todas las pruebas se realizaron en una máquina virtual VirtualBox aislada con Kali Linux 2026.1, Next.js 15.0.0 y React 19.0.0, sin exposición a la red.

| Módulo de ataque | Resultado | Notas |
|---------------|--------|-------|
| Ejecución de comandos | ✅ RCE confirmado | `whoami`, `id`, `uname -a` funcionan de forma fiable |
| Eliminar proyectos | ✅ Panel modificado | Proyectos eliminados, estructura de React preservada |
| Desfigurar sitio | ✅ Sitio web desfigurado | Mensaje personalizado mostrado |
| Robar entorno | ✅ Variables de entorno extraídas | Guardadas en `stolen_env.txt` |
| Apagar servidores | ✅ Todos los servidores aparecen detenidos | UI actualizada, React funcional |
| Shell interactiva | ✅ Shell persistente | Comandos especiales disponibles |
| Restauración | ✅ Estado original restaurado | Mediante el script `restore.sh` |

**Determinismo:** A diferencia de los exploits probabilísticos (p. ej., heap spray), CVE-2025-55182 es completamente determinista: cualquier solicitud HTTP POST correctamente formateada produce RCE con probabilidad 1 en cualquier sistema sin parchear que ejecute React 19.0.0–19.2.0 con React Server Components habilitados.

---

## Documentación técnica

| Documento | Descripción |
|----------|-------------|
| [Análisis de la Causa Raíz](https://github.com/devianntsec/cve-2025-55182/blob/main/docs/analysis/01-root-cause.md) | Fallo de deserialización y contaminación de prototipos en React Flight |
| [Desglose del Payload](https://github.com/devianntsec/cve-2025-55182/blob/main/docs/analysis/02-payload-breakdown.md) | Análisis línea por línea de la estructura JSON maliciosa |
| [Cronología del CVE](https://github.com/devianntsec/cve-2025-55182/blob/main/docs/analysis/03-timeline.md) | Cronología del descubrimiento, divulgación y parche |

---

## Contexto académico

Esta investigación forma parte de mi **Tesis de Máster en Ciberseguridad** (UCAM — Campus Internacional de Ciberseguridad), en la que se analizan vulnerabilidades N-Day en múltiples entornos.

Este CVE representa el vector de **framework moderno de JavaScript** dentro de la tesis, y demuestra:

- Vulnerabilidades de deserialización en React Server Components
- Contaminación de prototipos como primitiva de RCE
- Explotación de Next.js Server Actions
- Técnicas de post-explotación en entornos Node.js
- Metodologías de restauración segura de laboratorio

**Palabras clave:** `RCE` · `Prototype Pollution` · `Deserialization` · `React` · `Next.js` · `Server Actions` · `CVE-2025-55182`

---

## Autor

**Annais Molina (devianntsec)**  — Investigadora de Seguridad | Máster en Ciberseguridad (UCAM)

[![GitHub](https://img.shields.io/badge/GitHub-@devianntsec-181717?style=flat-square&logo=github)](https://github.com/devianntsec)
[![LinkedIn](https://img.shields.io/badge/LinkedIn-Annais%20Molina-0077B5?style=flat-square&logo=linkedin)](https://linkedin.com/in/annais-molina-fuentes)
[![Blog](https://img.shields.io/badge/Blog-deviannt.com-FF5722?style=flat-square&logo=hashnode)](https://blog.deviannt.com)
[![Email](https://img.shields.io/badge/[email protected]?style=flat-square&logo=gmail)](mailto:[email protected])

---

## Agradecimientos

- [**@zack0x01**](https://github.com/zack0x01) — Aplicación vulnerable original
- [**Lachlan Davidson (Carapace)**](https://github.com/assetnote) — Descubrimiento original de la vulnerabilidad y divulgación responsable
- [**AssetNote**](https://github.com/assetnote) — Herramienta de detección react2shell-scanner
- [**Moritz Sanft**](https://github.com/moritz-sanft) — Primer PoC público funcional (~30 h después de la divulgación)
- [**maple3142**](https://gist.github.com/maple3142) — PoC público del reportero original (5 de diciembre de 2025)

---

## Licencia

Licencia MIT — consulte [LICENSE](https://github.com/devianntsec/cve-2025-55182/blob/main/LICENSE)

---

## Aviso legal

Este repositorio se proporciona **únicamente con fines educativos y de investigación en seguridad**, como parte de una Tesis de Máster académica. Todas las pruebas se realizaron en máquinas virtuales aisladas sin exposición a la red. Úselo únicamente en sistemas de su propiedad o para los que tenga autorización escrita explícita para realizar pruebas. El uso no autorizado contra sistemas es ilegal y puede dar lugar a un proceso penal.

<div align="center">
  <sub>© 2026 Annais Molina · Tesis de Máster en Ciberseguridad</sub><br/>
  <sub>UCAM Universidad Católica San Antonio de Murcia · Campus Internacional de Ciberseguridad</sub>
</div>
Descargar herramienta