1414 - Pentesting IBM MQ
Taarifa Msingi
IBM MQ ni teknolojia ya IBM ya kusimamia foleni za ujumbe. Kama teknolojia nyingine za mawakala wa ujumbe, inalenga kupokea, kuhifadhi, kusindika na kugawa habari kati ya watengenezaji na watumiaji.
Kwa chaguo-msingi, inaweka wazi bandari ya IBM MQ TCP 1414. Marafiki, API ya REST ya HTTP inaweza pia kuwekwa wazi kwenye bandari ya 9443. Vipimo (Prometheus) vinaweza pia kupatikana kupitia bandari ya TCP 9157.
Bandari ya IBM MQ TCP 1414 inaweza kutumika kudhibiti ujumbe, foleni, njia za mawasiliano, ... lakini pia kudhibiti kifaa.
IBM inatoa nyaraka za kiufundi zinazopatikana kwenye https://www.ibm.com/docs/en/ibm-mq.
Zana
Zana iliyopendekezwa kwa udanganyifu rahisi ni punch-q, na matumizi ya Docker. Zana hiyo inatumia kwa sasa maktaba ya Python pymqi
.
Kwa njia ya mwongozo zaidi, tumia maktaba ya Python pymqi. IBM MQ dependencies inahitajika.
Kuweka pymqi
IBM MQ dependencies inahitaji kuwekwa na kupakia:
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.
Fungua (
tar xvzf 9.0.0.4-IBM-MQC-LinuxX64.tar.gz
).Chalaza
sudo ./mqlicense.sh
ili kukubali masharti ya leseni.
Ikiwa uko chini ya Kali Linux, badilisha faili ya
mqlicense.sh
: ondoa/tafuta mistari ifuatayo (kati ya mistari 105-110):
Weka pakiti hizi:
Kisha, ongeza muda mfupi faili za
.so
kwa LD:export LD_LIBRARY_PATH=/opt/mqm/lib64
, kabla ya kuendesha zana nyingine zinazotumia tegemezi hizi.
Kisha, unaweza kuzalisha mradi pymqi: una vipande vya kuvutia vya nambari, kudumu, ... Au unaweza moja kwa moja kusakinisha maktaba na: pip install pymqi
.
Kutumia punch-q
Kwa kutumia Docker
Tumia tu: sudo docker run --rm -ti leonjza/punch-q
.
Bila kutumia Docker
Zalisha mradi punch-q kisha fuata maelezo ya kusakinisha (pip install -r requirements.txt && python3 setup.py install
).
Baadaye, inaweza kutumika na amri punch-q
.
Uchunguzi
Unaweza kujaribu kutambua jina la meneja wa foleni, watumiaji, njia za mawasiliano na foleni na punch-q au pymqi.
Meneja wa Foleni
Marafiki, mara nyingi hakuna kinga dhidi ya kupata jina la Meneja wa Foleni:
Vituo
punch-q inatumia orodha ya maneno ya ndani (inayoweza kubadilishwa) ili kupata vituo vilivyopo. Mfano wa matumizi:
Inatokea kwamba baadhi ya mifano ya IBM MQ inakubali ombi la MQ lisilo na uthibitisho, kwa hivyo --username / --password
haihitajiki. Bila shaka, haki za ufikiaji zinaweza kutofautiana.
Marafiki tunapopata jina la kituo kimoja (hapa: DEV.ADMIN.SVRCONN
), tunaweza kutambaza vituo vyote vingine.
Utaratibu wa kutambaza unaweza kufanywa kimsingi na kifungu hiki cha nambari code/examples/dis_channels.py
kutoka kwa pymqi:
... Lakini punch-q pia inajumuisha sehemu hiyo (na habari zaidi!). Inaweza kuzinduliwa kwa kutumia:
Safu za Kusubiri
Kuna kipande cha nambari na pymqi (dis_queues.py
) lakini punch-q inaruhusu kupata vipande zaidi vya habari kuhusu safu za kusubiri:
Kutumia
Kuvuja ujumbe
Unaweza kulenga foleni / kituo ili kuvuta / kuvuja ujumbe kutoka kwao (operesheni isiyoharibu). Mifano:
Usisite kufanya mzunguko kwenye foleni zote zilizotambuliwa.
Utekelezaji wa Kanuni
Baadhi ya maelezo kabla ya kuendelea: IBM MQ inaweza kudhibitiwa kupitia njia mbalimbali: MQSC, PCF, Amri ya Kudhibiti. Orodha za jumla zinaweza kupatikana katika nyaraka za IBM MQ. PCF (Programmable Command Formats) ndio tunayolenga kuwasiliana kijijini na kifaa. 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 hoja yaStartCommand
inayoelekeza kwenye programu ya ndani kwenye kifaa (mfano:/bin/sh
).Pia kuna onyo la amri katika nyaraka: "Tahadhari: Amri hii inaruhusu mtumiaji kutekeleza amri isiyojulikana na mamlaka ya mqm. Ikiwa haki za kutumia amri hii zinatolewa, mtumiaji mwenye nia mbaya au asiyeangalifu anaweza kufafanua huduma ambayo inaharibu mifumo au data yako, kwa mfano, kwa kufuta faili muhimu."
Kumbuka: kulingana na nyaraka za IBM MQ (Marejeleo ya Utawala), pia kuna kiungo cha HTTP kwenye
/admin/action/qmgr/{qmgrName}/mqsc
ili kutekeleza amri sawa na MQSC kwa uundaji wa huduma (DEFINE SERVICE
). Jambo hili halijashughulikiwa bado hapa.
Uundaji / kufuta huduma kwa kutumia PCF kwa utekelezaji wa programu kijijini unaweza kufanywa na punch-q:
Mfano 1
Katika magogo ya IBM MQ, unaweza kusoma kwamba amri imefanikiwa kutekelezwa:
Unaweza pia kutambaza programu zilizopo kwenye kifaa (hapa /bin/doesnotexist
... haipo):
Tafadhali kumbuka kuwa uzinduzi wa programu ni usiohusiana. Kwa hivyo, unahitaji kitu cha pili ili kutumia udhaifu (msikilizaji wa kurejesha kichwa cha pembeni, uundaji wa faili kwenye huduma tofauti, utoaji wa data kupitia mtandao...)
Mfano 2
Kwa kichwa cha pembeni cha urahisi, punch-q pia inatoa mizigo miwili ya kichwa cha pembeni cha kurudisha:
Moja na bash
Moja na perl
Bila shaka unaweza kujenga moja desturi na amri ya execute
.
Kwa bash:
Kwa perl:
Custom PCF
Unaweza kuchunguza nyaraka za IBM MQ na kutumia moja kwa moja maktaba ya python ya pymqi ili kujaribu amri maalum ya PCF ambayo haijatekelezwa katika punch-q.
Mfano:
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: ):
Mazingira ya majaribio
Ikiwa unataka kujaribu tabia na udhaifu wa IBM MQ, unaweza kuweka mazingira ya ndani kulingana na Docker:
Kuwa na akaunti kwenye ibm.com na cloud.ibm.com.
Unda IBM MQ iliyowekwa kwenye kontena na:
Kwa chaguo-msingi, uthibitishaji umewezeshwa, jina la mtumiaji ni admin
na nenosiri ni passw0rd
(Mazingira ya kipengele MQ_ADMIN_PASSWORD
). Hapa, jina la meneja wa foleni limewekwa kuwa MYQUEUEMGR
(kipengele MQ_QMGR_NAME
).
Unapaswa kuwa na IBM MQ imezinduliwa na kuendesha na bandari zake zimefunguliwa:
Toleo la zamani la picha za IBM MQ docker zinapatikana hapa: https://hub.docker.com/r/ibmcom/mq/.
Marejeo
Last updated