<summary><strong>Lernen Sie das Hacken von AWS von Grund auf mit</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS oder HackTricks im PDF-Format** haben? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegramm-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das [hacktricks-Repository](https://github.com/carlospolop/hacktricks) und das [hacktricks-cloud-Repository](https://github.com/carlospolop/hacktricks-cloud) senden**.
IBM MQ ist eine IBM-Technologie zur Verwaltung von Nachrichtenwarteschlangen. Wie andere **Message-Broker**-Technologien ist sie darauf spezialisiert, Informationen zwischen Produzenten und Konsumenten zu empfangen, zu speichern, zu verarbeiten und zu klassifizieren.
Ein empfohlenes Tool für einfache Ausnutzung ist **[punch-q](https://github.com/sensepost/punch-q)**, mit Docker-Verwendung. Das Tool verwendet aktiv die Python-Bibliothek `pymqi`.
Für einen manuelleren Ansatz verwenden Sie die Python-Bibliothek **[pymqi](https://github.com/dsuch/pymqi)**. Es werden [IBM MQ-Abhängigkeiten](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) benötigt.
1. Erstellen Sie ein Konto (IBMid) auf [https://login.ibm.com/](https://login.ibm.com/).
2. Laden Sie die IBM MQ-Bibliotheken von [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) herunter. Für Linux x86_64 ist es **9.0.0.4-IBM-MQC-LinuxX64.tar.gz**.
3. Entpacken Sie (`tar xvzf 9.0.0.4-IBM-MQC-LinuxX64.tar.gz`).
4. Führen Sie `sudo ./mqlicense.sh` aus, um die Lizenzbedingungen zu akzeptieren.
6. Fügen Sie dann vor dem Ausführen anderer Tools, die diese Abhängigkeiten verwenden, die `.so`-Dateien vorübergehend zu LD hinzu: `export LD_LIBRARY_PATH=/opt/mqm/lib64`.
Dann können Sie das Projekt [**pymqi**](https://github.com/dsuch/pymqi) klonen: Es enthält interessante Code-Snippets, Konstanten, ... Oder Sie können die Bibliothek direkt mit `pip install pymqi` installieren.
Klonen Sie das Projekt [**punch-q**](https://github.com/sensepost/punch-q) und folgen Sie dann der Readme für die Installation (`pip install -r requirements.txt && python3 setup.py install`).
Es kommt vor, dass einige IBM MQ-Instanzen **unauthentifizierte** MQ-Anfragen akzeptieren, sodass `--username / --password` nicht erforderlich ist. Natürlich können auch die Zugriffsrechte variieren.
> Einige Details vor dem Fortfahren: IBM MQ kann auf verschiedene Arten gesteuert werden: MQSC, PCF, Control Command. Einige allgemeine Listen finden Sie in der [IBM MQ-Dokumentation](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) (***Programmable Command Formats***) ist das, worauf wir uns konzentrieren, um remote mit der Instanz zu interagieren. **punch-q** und weiterhin **pymqi** basieren auf PCF-Interaktionen.
> Ein interessanter Befehl ist `MQCMD_CREATE_SERVICE` und seine Dokumentation ist [hier](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=formats-change-copy-create-service-multiplatforms) verfügbar. Er nimmt als Argument einen `StartCommand`, der auf ein lokales Programm auf der Instanz verweist (Beispiel: `/bin/sh`).
>
> Es gibt auch eine Warnung für den Befehl in der Dokumentation: *"Achtung: Dieser Befehl ermöglicht es einem Benutzer, einen beliebigen Befehl mit mqm-Berechtigung auszuführen. Wenn einem Benutzer das Recht zum Verwenden dieses Befehls gewährt wird, könnte ein bösartiger oder unvorsichtiger Benutzer einen Dienst definieren, der Ihre Systeme oder Daten beschädigt, indem er beispielsweise wichtige Dateien löscht."*
>
> *Hinweis: Immer gemäß der IBM MQ-Dokumentation (Administration Reference) gibt es auch einen HTTP-Endpunkt unter `/admin/action/qmgr/{qmgrName}/mqsc`, um den entsprechenden MQSC-Befehl für die Service-Erstellung (`DEFINE SERVICE`) auszuführen. Dieser Aspekt wird hier noch nicht behandelt.*
**Beachten Sie, dass der Programmstart asynchron ist. Sie benötigen also ein zweites Element, um den Exploit zu nutzen** ***(Listener für Reverse-Shell, Dateierstellung auf einem anderen Dienst, Datenexfiltration über das Netzwerk ...)***
Sie können sich in die IBM MQ-Dokumentation vertiefen und direkt die Python-Bibliothek **pymqi** verwenden, um spezifische PCF-Befehle zu testen, die nicht in **punch-q** implementiert sind.
Wenn Sie die Konstantennamen nicht finden können, können Sie sich auf die [IBM MQ-Dokumentation](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=constants-mqca-character-attribute-selectors) beziehen.
> *Beispiel für [`MQCMD_REFRESH_CLUSTER`](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=formats-mqcmd-refresh-cluster-refresh-cluster) (Dezimal = 73). Es benötigt den Parameter `MQCA_CLUSTER_NAME` (Dezimal = 2029), der `*` sein kann (Dokumentation: ):*
Standardmäßig ist die Authentifizierung aktiviert, der Benutzername lautet `admin` und das Passwort lautet `passw0rd` (Umgebungsvariable `MQ_ADMIN_PASSWORD`).
Hier wurde der Name des Warteschlangenmanagers auf `MYQUEUEMGR` festgelegt (Variable `MQ_QMGR_NAME`).