1414 - Pentesting IBM MQ
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
IBM MQ ni teknolojia ya IBM ya kusimamia foleni za ujumbe. Kama teknolojia nyingine za message broker, inakusudia kupokea, kuhifadhi, kuchakata na kuainisha taarifa kati ya wazalishaji na watumiaji.
Kwa kawaida, inaonyesha bandari ya TCP ya IBM MQ 1414. Wakati mwingine, API ya HTTP REST inaweza kuonyeshwa kwenye bandari 9443. Vipimo (Prometheus) vinaweza pia kufikiwa kutoka bandari ya TCP 9157.
Bandari ya TCP ya IBM MQ 1414 inaweza kutumika kudhibiti ujumbe, foleni, kanali, ... lakini pia kudhibiti mfano.
IBM inatoa hati kubwa ya kiufundi inayopatikana kwenye https://www.ibm.com/docs/en/ibm-mq.
Zana inayopendekezwa kwa matumizi rahisi ni punch-q, kwa matumizi ya Docker. Zana hii inatumia maktaba ya Python pymqi
.
Kwa njia ya mikono zaidi, tumia maktaba ya Python pymqi. IBM MQ dependencies zinahitajika.
IBM MQ dependencies zinahitaji kusanikishwa na kupakiwa:
Unda akaunti (IBMid) kwenye https://login.ibm.com/.
Pakua maktaba za IBM MQ kutoka 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. Kwa Linux x86_64 ni 9.0.0.4-IBM-MQC-LinuxX64.tar.gz.
Fanya dekompresi (tar xvzf 9.0.0.4-IBM-MQC-LinuxX64.tar.gz
).
Endesha sudo ./mqlicense.sh
kukubali masharti ya leseni.
If you are under Kali Linux, modify the file
mqlicense.sh
: remove/comment the following lines (between lines 105-110):
Sanikisha hizi pakiti:
Kisha, ongeza kwa muda faili za .so
kwenye LD: export LD_LIBRARY_PATH=/opt/mqm/lib64
, kabla ya kutumia zana nyingine zinazotumia utegemezi hizi.
Kisha, unaweza kunakili mradi pymqi: ina vipande vya msimbo vya kuvutia, constants, ... Au unaweza kufunga maktaba moja kwa moja kwa: pip install pymqi
.
Tumia tu: sudo docker run --rm -ti leonjza/punch-q
.
Nakili mradi punch-q kisha fuata readme kwa ajili ya usakinishaji (pip install -r requirements.txt && python3 setup.py install
).
Baada ya hapo, inaweza kutumika kwa amri punch-q
.
Unaweza kujaribu kuorodhesha jina la meneja wa foleni, watumiaji, vituo na foleni kwa kutumia punch-q au pymqi.
Wakati mwingine, hakuna ulinzi dhidi ya kupata jina la Meneja wa Foleni:
punch-q inatumia orodha ya maneno ya ndani (inayoweza kubadilishwa) kutafuta vituo vilivyopo. Mfano wa matumizi:
Inatokea kwamba baadhi ya mifano ya IBM MQ zinakubali maombi ya MQ yasiyo na uthibitisho, hivyo --username / --password
hazihitajiki. Kwa kweli, haki za ufikiaji pia zinaweza kutofautiana.
Pale tunapopata jina moja la channel (hapa: DEV.ADMIN.SVRCONN
), tunaweza kuhesabu channel zingine zote.
Hesabu hiyo inaweza kufanywa kimsingi na kipande hiki cha msimbo code/examples/dis_channels.py
kutoka pymqi:
... Lakini punch-q pia inaingiza sehemu hiyo (ikiwa na maelezo zaidi!). Inaweza kuzinduliwa na:
Kuna kipande cha msimbo na pymqi (dis_queues.py
) lakini punch-q inaruhusu kupata vipande zaidi vya habari kuhusu foleni:
Unaweza kulenga foleni(s)/kanali(s) ili kunusa / kutupa ujumbe kutoka kwao (operesheni isiyo na uharibifu). Examples:
Usisite kujaribu kwenye foleni zote zilizotambuliwa.
Maelezo machache kabla ya kuendelea: IBM MQ inaweza kudhibitiwa kwa njia nyingi: MQSC, PCF, Command ya Kudhibiti. Orodha za jumla zinaweza kupatikana katika nyaraka za IBM MQ. PCF (*Mifumo ya Amri Inayoweza Kuprogramu) ndiyo tunayoangazia ili kuingiliana kwa mbali na mfano. punch-q na zaidi pymqi zinategemea mwingiliano wa PCF.
Unaweza kupata orodha ya amri za PCF:
Amri moja ya kuvutia ni
MQCMD_CREATE_SERVICE
na nyaraka zake zinapatikana hapa. Inachukua kama hojaStartCommand
inayotaja programu ya ndani kwenye mfano (mfano:/bin/sh
).Pia kuna onyo la amri katika nyaraka: "Kumbuka: Amri hii inaruhusu mtumiaji kuendesha amri yoyote kwa mamlaka ya mqm. Ikiwa haki za kutumia amri hii zitatolewa, mtumiaji mbaya au asiye makini anaweza kufafanua huduma ambayo inaharibu mifumo yako au data, kwa mfano, kwa kufuta faili muhimu."
Kumbuka: kila wakati kulingana na nyaraka za IBM MQ (Marejeo ya Usimamizi), pia kuna kiungo cha HTTP kwenye
/admin/action/qmgr/{qmgrName}/mqsc
ili kuendesha amri sawa ya MQSC kwa ajili ya uundaji wa huduma (DEFINE SERVICE
). Kipengele hiki hakijajadiliwa hapa bado.
Uundaji / kufuta huduma kwa PCF kwa ajili ya utekelezaji wa programu ya mbali unaweza kufanywa na punch-q:
Mfano 1
Katika kumbukumbu za IBM MQ, unaweza kusoma amri imefanikiwa kutekelezwa:
Unaweza pia kuhesabu programu zilizopo kwenye mashine (hapa /bin/doesnotexist
... haipo):
Kumbuka kwamba uzinduzi wa programu ni wa asenkroni. Hivyo unahitaji kipengele kingine ili kutumia udhaifu *(listener kwa ajili ya reverse shell, uundaji wa faili kwenye huduma tofauti, uhamasishaji wa data kupitia mtandao ...)
Mfano wa 2
Kwa reverse shell rahisi, punch-q inapendekeza pia payloads mbili za reverse shell:
Moja na bash
Moja na perl
Kwa hakika unaweza kujenga moja maalum kwa kutumia amri ya execute
.
Kwa bash:
Kwa perl:
Unaweza kuchimba ndani ya nyaraka za IBM MQ na kutumia moja kwa moja maktaba ya pymqi ya python ili kujaribu amri maalum za PCF ambazo hazijatekelezwa katika punch-q.
Example:
Ikiwa huwezi kupata majina ya kudumu, unaweza kurejelea nyaraka za IBM MQ.
Mfano wa
MQCMD_REFRESH_CLUSTER
(Decimal = 73). Inahitaji parameterMQCA_CLUSTER_NAME
(Decimal = 2029) ambayo inaweza kuwa*
(Doc: ):
Ikiwa unataka kupima tabia na matumizi ya IBM MQ, unaweza kuanzisha mazingira ya ndani kulingana na Docker:
Kuwa na akaunti kwenye ibm.com na cloud.ibm.com.
Unda IBM MQ iliyowekwa kwenye kontena na:
Kwa default, uthibitishaji umewezeshwa, jina la mtumiaji ni admin
na nenosiri ni passw0rd
(Kigezo cha mazingira MQ_ADMIN_PASSWORD
). Hapa, jina la meneja wa foleni limewekwa kuwa MYQUEUEMGR
(kigezo MQ_QMGR_NAME
).
Unapaswa kuwa na IBM MQ ikifanya kazi na bandari zake zikiwa wazi:
Toleo la zamani la picha za IBM MQ docker ziko kwenye: https://hub.docker.com/r/ibmcom/mq/.