
यह एक Python3 स्क्रिप्ट है जो WebERP संस्करण 4.15 में एक Blind SQL Injection कमजोरी के शोषण को प्रदर्शित करती है।
यह Python3 स्क्रिप्ट है जो WebERP संस्करण 4.15 में Blind SQL Injection कमज़ोरी (vulnerability) का शोषण करने का प्रदर्शन करती है, जिसे मूलतः 10 जून 2019 को Semen Alexandrovich Lyhin द्वारा खोजा गया था। मूल शोषण (exploit) यहाँ पाया जा सकता है, और WebERP सिस्टम के बारे में अधिक जानकारी आधिकारिक WebERP वेबसाइट से प्राप्त की जा सकती है। Overview
कमज़ोरी उस तरीके में है जिससे WebERP base64 एन्कोडिंग में प्राप्त क्वेरी को संभालता है और उसे unserialize() फ़ंक्शन में पास करता है। विशेष रूप से, स्क्रिप्ट बिना किसी सैनिटाइज़ेशन (sanitization) के इन क्वेरी को एक ऐरे (array) में डीसेरियलाइज़ (deserialize) कर सकती है। उसके बाद, इस ऐरे का प्रत्येक तत्व बिना अतिरिक्त जाँच के सीधे SQL क्वेरी में डाल दिया जाता है, जिससे सिस्टम SQL injection हमलों के प्रति संवेदनशील हो जाता है। Script Operation
यह स्क्रिप्ट उपरोक्त कमज़ोरी का शोषण निम्नलिखित चरणों में करती है:
एक malicious query generatePayload() फ़ंक्शन का उपयोग करके तैयार की जाती है। फ़ंक्शन SQL injection पेलोड वाली एक serialize की गई ऐरे बनाता है और इसे base64 प्रारूप में एन्कोड करता है।
स्क्रिप्ट प्रदान की गई क्रेडेंशियल (credentials) का उपयोग करके और getCookies() फ़ंक्शन के माध्यम से WebERP सिस्टम में लॉगिन करती है, जो सेशन कुकीज़ (session cookies) प्राप्त करता है।
addSupplierID() फ़ंक्शन का उपयोग करके सिस्टम में एक नया आपूर्तिकर्ता (supplier) जोड़ा जाता है। आपूर्तिकर्ता का नाम बाद में सिस्टम की प्रतिक्रिया की पहचान करने के लिए एक मार्कर के रूप में उपयोग किया जाता है।
runExploit() फ़ंक्शन का उपयोग करके शोषण निष्पादित किया जाता है। यह WebERP सिस्टम के "Payments.php" पेज पर POST अनुरोध भेजता है। यह फ़ंक्शन POST डेटा में एक पैरामीटर के रूप में base64 एन्कोडेड पेलोड को एम्बेड करता है।
अनुरोध के प्रति प्रतिक्रिया समय मापा जाता है। काफी लंबा प्रतिक्रिया समय यह संकेत देता है कि इंजेक्ट किए गए sleep() कमांड के कारण SQL क्वेरी में देरी हुई, जो SQL injection कमज़ोरी की उपस्थिति की पुष्टि करता है।
python3 exploit.py <target> <path> <login> <password> <order>
<target>, <path>, <login>, <password>, और <order> को अपने लक्ष्य IP पते, लक्ष्य पथ, उपयोगकर्ता लॉगिन, उपयोगकर्ता पासवर्ड, और कंपनी ऑर्डर से बदलें।
उदाहरण:
python exploit.py 192.168.1.1 'WEBerp/' admin weberp 1