1414 - Pentesting IBM MQ
मौलिक जानकारी
आईबीएम क्यू एक आईबीएम प्रौद्योगिकी है जो संदेश कतारों का प्रबंधन करने के लिए है। जैसे अन्य संदेश ब्रोकर प्रौद्योगिकियों, यह उत्पादक और उपभोक्ताओं के बीच सूचना प्राप्त, संग्रहित, प्रसंस्कृत और वर्गीकरण करने के लिए समर्पित है।
डिफ़ॉल्ट रूप से, यह आईबीएम क्यू टीसीपी पोर्ट 1414 को उजागर करता है। कभी-कभी, HTTP REST API पोर्ट 9443 पर उजागर किया जा सकता है। मैट्रिक्स (प्रोमेथियस) को भी टीसीपी पोर्ट 9157 से एक्सेस किया जा सकता है।
आईबीएम क्यू टीसीपी पोर्ट 1414 का उपयोग संदेश, कतार, चैनल, ... को मैनिपुलेट करने के लिए हो सकता है, लेकिन इंस्टेंस को भी नियंत्रित करने के लिए।
आईबीएम द्वारा https://www.ibm.com/docs/en/ibm-mq पर एक बड़ी तकनीकी प्रलेखन उपलब्ध है।
उपकरण
आसान शोध के लिए एक सुझाया गया उपकरण है punch-q, जिसमें डॉकर का उपयोग होता है। यह उपकरण सक्रिय रूप से पायथन पुस्तकालय pymqi
का उपयोग करता है।
अधिक मैन्युअल दृष्टिकोण के लिए, पायथन पुस्तकालय pymqi का उपयोग करें। आईबीएम क्यू निर्भरताएं की आवश्यकता होती है।
pymqi को स्थापित करना
आईबीएम क्यू निर्भरताएं को स्थापित और लोड किया जाना चाहिए:
https://login.ibm.com/ पर एक खाता (IBMid) बनाएं।
https://www.ibm.com/support/fixcentral/swg/selectFixes?parent=ibm%7EWebSphere&product=ibm/WebSphere/WebSphere+MQ&release=9.0.0.4&platform=All&function=fixId&fixids=9.0.0.4-IBM-MQC-*,9.0.0.4-IBM-MQ-Install-Java-All,9.0.0.4-IBM-MQ-Java-InstallRA&useReleaseAsTarget=true&includeSupersedes=0&source=fc से आईबीएम क्यू पुस्तकालय डाउनलोड करें। लिनक्स x86_64 के लिए यह 9.0.0.4-IBM-MQC-LinuxX64.tar.gz है।
डीकॉम्प्रेस करें (
tar xvzf 9.0.0.4-IBM-MQC-LinuxX64.tar.gz
)।लाइसेंस की शर्तें स्वीकार करने के लिए
sudo ./mqlicense.sh
चलाएं।
यदि आप काली लिनक्स के अंदर हैं, तो फ़ाइल
mqlicense.sh
को संशोधित करें: निम्नलिखित पंक्तियों को हटाएं/टिप्पणी करें (लाइन 105-110 के बीच):
ये पैकेज स्थापित करें:
फिर,
.so
फ़ाइलों को LD में अस्थायी रूप से जोड़ें:export LD_LIBRARY_PATH=/opt/mqm/lib64
, पहले इन डिपेंडेंसियों का उपयोग करने वाले अन्य उपकरणों को चलाने से पहले।
फिर, आप परियोजना pymqi क्लोन कर सकते हैं: इसमें दिलचस्प कोड स्निपेट, स्थिरांक, ... है। या आप सीधे पुस्तकालय को इंस्टॉल कर सकते हैं: pip install pymqi
।
पंच-क्यू का उपयोग
डॉकर के साथ
बस इस्तेमाल करें: sudo docker run --rm -ti leonjza/punch-q
।
डॉकर के बिना
परियोजना punch-q क्लोन करें और फिर स्थापना के लिए readme का पालन करें (pip install -r requirements.txt && python3 setup.py install
)।
इसके बाद, इसे punch-q
कमांड के साथ उपयोग किया जा सकता है।
गणना
आप पंच-क्यू या pymqi के साथ क्यू मैनेजर नाम, उपयोगकर्ता, चैनल और क्यू की गणना करने की कोशिश कर सकते हैं।
कतार प्रबंधक
कभी-कभी, क्यू प्रबंधक नाम प्राप्त करने के खिलाफ कोई सुरक्षा नहीं होती है:
चैनल
punch-q एक आंतरिक (संशोधनीय) शब्दसूची का उपयोग कर विद्यमान चैनल खोजने के लिए किया जाता है। उपयोग उदाहरण:
ऐसा होता है कि कुछ IBM MQ उदाहरण अप्रमाणित MQ अनुरोध स्वीकार करते हैं, इसलिए --username / --password
की आवश्यकता नहीं है। बेशक, पहुंच अधिकार भी भिन्न हो सकते हैं।
जैसे ही हमें एक चैनल नाम मिलता है (यहाँ: DEV.ADMIN.SVRCONN
), हम सभी अन्य चैनलों की जांच कर सकते हैं।
सूचीकरण मूल रूप से इस कोड स्निपेट code/examples/dis_channels.py
के साथ pymqi से किया जा सकता है:
... लेकिन punch-q भी उस हिस्से को एम्बेड करता है (अधिक जानकारी के साथ!)। इसे इस प्रकार से लॉन्च किया जा सकता है:
कताएँ
यहाँ एक कोड स्निपेट है pymqi (dis_queues.py
) लेकिन punch-q को कताओं के बारे में अधिक जानकारी प्राप्त करने की अनुमति है:
शारीरिक शोषण
संदेश डंप
आप कतार(कतारों)/चैनल(चैनलों) को लकड़बग्घा लगाने के लिए लकड़बग्घा लगाने के लिए संदेशों को छानने/डंप करने का लक्ष्य निशेष ऑपरेशन कर सकते हैं। उदाहरण:
सभी पहचानी गई कतारों पर इटरेट करने से हिचकिचाहट न करें।
कोड निष्पादन
जारी रखने से पहले कुछ विवरण: IBM MQ को कई तरीकों से नियंत्रित किया जा सकता है: MQSC, PCF, नियंत्रण कमांड। कुछ सामान्य सूचियाँ IBM MQ दस्तावेज़ीकरण में मिल सकती हैं। PCF (प्रोग्रामेबल कमांड फॉर्मेट्स) उस पर ध्यान केंद्रित है जिससे हम इंस्टेंस के साथ दूरस्थ रूप से बातचीत कर सकते हैं। punch-q और इसके आगे pymqi PCF इंटरैक्शन पर आधारित हैं।
आप एक PCF कमांडों की सूची पा सकते हैं:
स्थिर से।
एक दिलचस्प कमांड
MQCMD_CREATE_SERVICE
है और इसकी दस्तावेज़ीकरण यहाँ उपलब्ध है। इसे एकStartCommand
के रूप में एक स्थानीय कार्यक्रम परिभाषित करता है जो इंस्टेंस पर हो (उदाहरण:/bin/sh
)।दस्तावेज़ में इस कमांड की एक चेतावनी भी है: "ध्यान दें: इस कमांड द्वारा एक उपयोगकर्ता को mqm अधिकार के साथ किसी भी विचित्र कमांड को चलाने की अनुमति होती है। इस कमांड का उपयोग करने के अधिकार प्रदान किए जाने पर, एक दुर्भाग्यपूर्ण या बेपरवाह उपयोगकर्ता एक सेवा को परिभाषित कर सकता है जो आपके सिस्टम या डेटा को नुकसान पहुंचा सकती है, उदाहरण के लिए, महत्वपूर्ण फ़ाइलें हटा देने के द्वारा।"
नोट: हमेशा IBM MQ दस्तावेज़ीकरण (प्रशासन संदर्भ) के अनुसार, सेवा निर्माण के लिए समकक्ष MQSC कमांड चलाने के लिए
/admin/action/qmgr/{qmgrName}/mqsc
पर एक HTTP एंडप्वाइंट भी है। यह पहलू यहाँ अभी तक शामिल नहीं है।
PCF के साथ रिमोट प्रोग्राम निष्पादन के लिए सेवा निर्माण / हटाना punch-q द्वारा किया जा सकता है:
उदाहरण 1
IBM MQ के लॉग में, आप पढ़ सकते हैं कि कमांड सफलतापूर्वक चलाई गई है:
आप मशीन पर मौजूदा प्रोग्रामों की सूची भी बना सकते हैं (यहाँ /bin/doesnotexist
... मौजूद नहीं है):
कृपया ध्यान दें कि कार्यक्रम लॉन्च असमंजस है। इसलिए आपको एक दूसरे आइटम की आवश्यकता है ताकि आप उसे शास्त्र के रूप में उपयोग कर सकें (रिवर्स शैल के लिए सुनने वाला, विभिन्न सेवा पर फ़ाइल निर्माण, नेटवर्क के माध्यम से डेटा निकासी ...)
उदाहरण 2
आसान रिवर्स शैल के लिए, punch-q दो रिवर्स शैल पेलोड भी प्रस्तुत करता है:
एक बैश के साथ
एक पर्ल के साथ
बेशक, आप कमांड का निष्पादन
के साथ एक कस्टम भी बना सकते हैं।
बैश के लिए:
For पर्ल:
कस्टम पीसीएफ
आप IBM MQ दस्तावेज़ीकरण में खोज कर सकते हैं और punch-q में निर्मित किसी विशेष PCF कमांड का परीक्षण करने के लिए pymqi पायथन पुस्तकालय का सीधा उपयोग कर सकते हैं।
उदाहरण:
यदि आप स्थिर नामों को नहीं ढूंढ पा रहे हैं, तो आप IBM MQ दस्तावेज़ीकरण का संदर्भ ले सकते हैं।
उदाहरण के लिए
MQCMD_REFRESH_CLUSTER
(दशमलव = 73)। इसे पैरामीटरMQCA_CLUSTER_NAME
(दशमलव = 2029) की आवश्यकता होती है जो*
हो सकता है (दस्तावेज़ीकरण: ):
परीक्षण परिवेश
यदि आप IBM MQ का व्यवहार और उत्पीड़न का परीक्षण करना चाहते हैं, तो आप Docker पर आधारित स्थानीय परिवेश सेटअप कर सकते हैं:
ibm.com और cloud.ibm.com पर खाता होना।
निम्नलिखित के साथ एक कंटेनरीकृत IBM MQ बनाएं:
IBM MQ डॉकर छवियों की पुरानी संस्करण यहाँ उपलब्ध हैं: https://hub.docker.com/r/ibmcom/mq/.
संदर्भ
Last updated