
RouterOSi (Mikrotik) seadmete kauguuendamise vĂ”imalus seab ohvriks sadu tuhandeid vĂ”rguseadmeid. Haavatuse tĂ”ttu on seotud Winbox protokolli DNS-vahemĂ€lu rĂŒndamine, mis vĂ”imaldab laadida seadmele vananenud (pöördusparooli "vaikimisi" lĂ€htestamisega) vĂ”i modifitseeritud pĂŒsivara.

Haavatuse ĂŒksikasjad
RouterOSi terminal toetab DNS-i otsimise kÀsu kasutamist.

See pĂ€ring töödeldakse binaarfaili nimega resolver poolt. Resolver on ĂŒks paljusid binaarfailide, mis on seotud RouterOSi Winbox protokolliga. KĂ”rgel tasemel "sĂ”numid", mis saadetakse Winboxi pordile, saavad suunata erinevatesse binaarfailidesse RouterOSis vastavalt massiivi pĂ”hjalikule nummerdamissemanale.
RouterOSis on vaikimisi DNS-serveri funktsioon keelatud.

Kuid isegi kui serveri funktsioon on keelatud, toetab reitermine oma DNS-vahemÀlu.

Kui teeme pÀringu, kasutades winbox_dns_request, nÀiteks example.com, salvestab ruuter tulemuse.

Kuna me saame mÀÀrata DNS-serveri, mille kaudu pÀring peab minema, on vale aadressi sisestamine triviaalne. NÀiteks, vÔime seadistada DNS-serveri rakenduse , et vastata A-kirjega, mis sisaldab IP-aadressi 192.168.88.250.
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()NĂŒĂŒd, kui Winboxis otsida example.com, nĂ€eme, et ruuteri DNS-vahemĂ€lu on rĂŒnnatud.

Muidugi, example.com-i rĂŒndamine pole eriti kasulik, kuna ruuter ei kasuta seda tĂ”eliselt. Sellegipoolest peab ruuter pöörduma upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com ja download.mikrotik.com poole. Ja tĂ€nu veel ĂŒhele veale on vĂ”imalus neid kĂ”iki korraga rĂŒnnata.
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()Ruuter kĂŒsib ĂŒhte luba, kuid me anname tagasi viis. Ruuter vahemĂ€lustab kĂ”ik need vastused valesti.

Ilmselgelt on see rĂŒnnak kasulik ka juhul, kui ruuter tegutseb DNS-teenusena, kuna see vĂ”imaldab rĂŒnnata ruuteri kliente.
Samuti vĂ”imaldab see rĂŒnnak Ă€ra kasutada tĂ”sisema haavatavuse: viia lĂ€bi RouterOS-i versiooni alandamine vĂ”i tagasiportimine. RĂŒndaja rekonstrueerib uuenduste ŃĐ”ŃĐČĐ”Ńi loogika, sealhulgas muudatused, ja suunab RouterOS-i kĂ€sitlema vananenud (haavatavat) versiooni kui kehtivat. Oht seisneb selles, et 'uuendamise' kĂ€igus lĂ€htestatakse administraatori parool vaikevÀÀrtusele â kurjategija saab sĂŒsteemi siseneda tĂŒhja parooliga!

RĂŒnnak on tĂ€iesti toimiv, hoolimata sellest, et rakendab veel mitmeid vektorite, sealhulgas , kuid see on juba liialdatud tehnika ning selle rakendamine ebaseaduslikel eesmĂ€rkidel on seadusevastane.
Kaitse
Lihtne Winboxi vĂ€ljalĂŒlitamine aitab kaitsta nende rĂŒnnakute eest. Kuigi Winboxi kaudu haldamine on mugav, on parem kasutada SSH-protokolli.
Allikas: habr.com
