
ActiveMQ के लिए रिपोर्ट किए गए CVE-2023-46604 का शोषण करने हेतु रिपॉजिटरी
यह रिपॉजिटरी CVE-2023-46604 का शोषण करने के उदाहरणों के साथ एक मार्गदर्शिका है।
यह शोषण एक दुर्भावनापूर्ण कमांड के माध्यम से Exception classes को इंस्टेंशिएट करने के लिए रिफ्लेक्शन के उपयोग का लाभ उठाता है, जो एक वैध कमांड होने के बजाय, exception class के रूप में एक Spring class भेजता है ताकि beans लोड हो सकें और string constructor parameter के रूप में एक URL भेजता है जहाँ से Spring Bean परिभाषाओं के साथ एक XML फ़ाइल डाउनलोड की जा सके।
यह Spring Bean वास्तव में एक java.lang.ProcessBuilder है जो Java Active MQ क्लाइंट या सर्वर चला रहे उपयोगकर्ता की समान अनुमतियों के साथ किसी भी bash कमांड को चलाएगा।
मैं चाहता हूँ कि मैं Python कोड में HTTP कनेक्शन बना सकूं, लेकिन जहाँ तक मैंने देखा है, Spring Bean लोडर किसी कारण से दो HTTP कॉल करता है और मैं Python की तुलना में Java में मल्टीथ्रेडेड प्रोग्रामिंग से अधिक परिचित हूँ
यह शोषण एक ActiveMQ क्लाइंट के लिए है जो एक ब्रोकर सर्वर से कनेक्शन बना रहा है, जो बदले में एक दुर्भावनापूर्ण सर्वर है जो इस क्लाइंट को रिमोट कोड निष्पादन के लिए असुरक्षित बना देगा।
शोषण दो प्रक्रियाओं में विभाजित है:
इसका परीक्षण Python 3.6 और Java 17 के साथ किया गया है
Java प्रोजेक्ट को संकलित करें:
cd activemq-exploit
mvn clean package
रूट प्रोजेक्ट पर cd .. के साथ वापस जाएं, और python scripts/client_exploit.py चलाएं
दूसरे टर्मिनल पर, Java कोड चलाएं:
cd activemq-exploitjava -jar target/activemq-exploit-1.0-SNAPSHOT.jarसर्वर शोषण एक ActiveMQ सर्वर ब्रोकर से कनेक्ट होता है और दुर्भावनापूर्ण कमांड भेजता है। इसका उपयोग केवल ActiveMQ Artemis 2.18 के साथ किया गया था और यह भेद्यता का शोषण करने में असमर्थ था क्योंकि Artemis Spring के साथ पैकेज नहीं है, और रिमोट कोड निष्पादन के लिए एकमात्र ज्ञात शोषण Spring Beans लोड करने के लिए एक Spring class के माध्यम से है।
हालांकि, scripts/server_exploit.py में Python स्क्रिप्ट क्लाइंट शोषण के समान ही करती है, केवल एक सर्वर से कनेक्ट होती है।
इसमें प्रमाणीकरण का अभाव है, इसलिए Open Wire हैंडशेक के अनुकूलन की आवश्यकता हो सकती है।