Il-ħila li tbaxxi l-apparat remot ibbażat fuq RouterOS (Mikrotik) tpoġġi f'riskju mijiet ta' eluf ta' tagħmir tan-netwerk. Il-vulnerabbiltà hija assoċjata ma 'avvelenament tal-cache DNS tal-protokoll Winbox u tippermettilek tagħbija skaduti (b'reset password default) jew firmware modifikat fuq l-apparat.
Dettalji tal-vulnerabbiltà
It-terminal RouterOS jappoġġja l-kmand tar-riżoluzzjoni għall-tfittxija tad-DNS.
Din it-talba tiġi mmaniġġjata minn sistema binarju msejjaħ resolver. Resolver huwa wieħed mill-ħafna binarji li jgħaqqdu mal-protokoll Winbox ta 'RouterOS. F'livell għoli, "messaġġi" mibgħuta lill-port Winbox jistgħu jiġu mgħoddija lil diversi binarji f'RouterOS ibbażati fuq skema ta 'numerazzjoni bbażata fuq firxa.
B'mod awtomatiku, RouterOS għandu l-karatteristika tas-server DNS diżattivata.
Madankollu, anke bil-funzjoni tas-server diżattivata, ir-router iżomm il-cache DNS tiegħu stess.
Meta nagħmlu talba billi nużaw winbox_dns_request per eżempju example.com, ir-router se jdaħħal ir-riżultat fil-cache.
Peress li nistgħu nispeċifikaw is-server DNS li minnu għandha tgħaddi t-talba, id-dħul ta 'indirizzi żbaljati huwa trivjali. Per eżempju, tista 'tikkonfigura implimentazzjoni ta' server DNS minn
def dns_response(data):
request = DNSRecord.parse(data)
reply = DNSRecord(DNSHeader(
id=request.header.id, qr=1, aa=1, ra=1), q=request.q)
qname = request.q.qname
qn = str(qname)
reply.add_answer(RR(qn,ttl=30,rdata=A("192.168.88.250")))
print("---- Reply:n", reply)
return reply.pack()
Issa jekk tfittex example.com billi tuża Winbox, tista 'tara li l-cache tad-DNS tar-router huwa avvelenat.
Naturalment, l-avvelenament example.com mhuwiex utli ħafna peress li r-router fil-fatt mhux se jużah. Madankollu, ir-router jeħtieġ li jaċċessa upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com u download.mikrotik.com. U grazzi għal żball ieħor, huwa possibbli li jiġu avvelenati kollha f'daqqa.
def dns_response(data):
request = DNSRecord.parse(data)
reply = DNSRecord(DNSHeader(
id=request.header.id, qr=1, aa=1, ra=1), q=request.q)
qname = request.q.qname
qn = str(qname)
reply.add_answer(RR(qn,ttl=30,rdata=A("192.168.88.250")))
reply.add_answer(RR("upgrade.mikrotik.com",ttl=604800,
rdata=A("192.168.88.250")))
reply.add_answer(RR("cloud.mikrotik.com",ttl=604800,
rdata=A("192.168.88.250")))
reply.add_answer(RR("cloud2.mikrotik.com",ttl=604800,
rdata=A("192.168.88.250")))
reply.add_answer(RR("download.mikrotik.com",ttl=604800,
rdata=A("192.168.88.250")))
print("---- Reply:n", reply)
return reply.pack()
Ir-router jitlob permess wieħed, u aħna nagħtu ħamsa lura. Ir-router ma jaħdimx dawn it-tweġibiet kollha b'mod korrett.
Ovvjament, dan l-attakk huwa utli wkoll jekk ir-router qed jaġixxi bħala server DNS, peress li jippermetti li l-klijenti tar-router jiġu attakkati.
Dan l-attakk jippermettilek ukoll tisfrutta vulnerabbiltà aktar serja: iddegrada jew backport il-verżjoni ta 'RouterOS. L-attakkant joħloq mill-ġdid il-loġika tas-server tal-aġġornament, inkluż il-changelog, u jġiegħel lil RouterOS jipperċepixxi l-verżjoni antikwata (vulnerabbli) bħala attwali. Il-periklu hawnhekk jinsab fil-fatt li meta l-verżjoni tkun "aġġornata", il-password tal-amministratur tiġi ssettjata mill-ġdid għall-valur default - attakkant jista 'jilloggja fis-sistema b'password vojta!
L-attakk qed jaħdem pjuttost, minkejja l-fatt li
protezzjoni
Sempliċement tiddiżattiva Winbox tippermettilek tipproteġi lilek innifsek minn dawn l-attakki. Minkejja l-konvenjenza tal-amministrazzjoni permezz ta 'Winbox, huwa aħjar li tuża l-protokoll SSH.
Sors: www.habr.com