Mampidi-doza amin'ny fitaovana tambajotra an'hetsiny ny fahafahana manafoana ny fitaovana mifototra amin'ny RouterOS (Mikrotik). Ny vulnerability dia misy ifandraisany amin'ny fanapoizinana ny cache DNS an'ny protocol Winbox ary mamela anao hampiditra ny lany andro (miaraka amin'ny famerenana ny tenimiafina default) na ny firmware novaina amin'ny fitaovana.
Tsipirian'ny vulnerability
Ny terminal RouterOS dia manohana ny baiko vahaolana ho an'ny fitadiavana DNS.
Ity fangatahana ity dia karakarain'ny binary antsoina hoe solver. Resolver dia iray amin'ireo binary maro mifandray amin'ny protocol Winbox an'ny RouterOS. Amin'ny ambaratonga avo, ny "hafatra" alefa any amin'ny seranan-tsambo Winbox dia azo alefa any amin'ny binary isan-karazany ao amin'ny RouterOS mifototra amin'ny rafitra fanisana mifototra amin'ny array.
Amin'ny alàlan'ny default, ny RouterOS dia manana ny endri-panompoana DNS voakitika.
Na izany aza, na dia kilemaina aza ny asan'ny mpizara, dia mitazona ny cache DNS azy manokana ny router.
Rehefa manao fangatahana amin'ny fampiasana winbox_dns_request ohatra ohatra.com izahay, dia hosoratan'ny router ny valiny.
Satria azontsika atao ny mamaritra ny mpizara DNS izay tokony handehanan'ny fangatahana, ny fampidirana adiresy diso dia tsy misy dikany. Ohatra, azonao atao ny manitsy ny fampiharana server DNS avy amin'ny
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()
Raha mikaroka ohatra.com ianao amin'ny fampiasana Winbox, dia ho hitanao fa voapoizina ny cache DNS an'ny router.
Mazava ho azy fa tsy dia ilaina loatra ny fanapoizinana example.com satria tsy tena hampiasa azy io ny router. Na izany aza, mila miditra amin'ny upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com ary download.mikrotik.com ny router. Ary noho ny fahadisoana iray hafa dia azo atao ny manapoizina azy rehetra indray mandeha.
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()
Ny router dia mangataka alalana iray, ary omenay dimy indray. Ny router dia tsy mitahiry tsara ireo valinteny rehetra ireo.
Mazava ho azy fa ilaina ihany koa ity fanafihana ity raha toa ny mpizara DNS ny router, satria mamela ny mpanjifan'ny router ho voatafika.
Ity fanafihana ity ihany koa dia ahafahanao manararaotra ny vulnerable lehibe kokoa: fampidinana na famerenana ny dikan-ny RouterOS. Ny mpanafika dia mamerina ny lojikan'ny mpizara fanavaozana, ao anatin'izany ny changelog, ary manery ny RouterOS hahita ny dikan-teny efa lany andro (marefo) ho toy ny ankehitriny. Ny loza eto dia ny hoe rehefa "havaozina" ny dikan-teny, ny tenimiafina administratera dia averina amin'ny sanda mahazatra - ny mpanafika dia afaka miditra amin'ny rafitra miaraka amin'ny tenimiafina foana!
Tena miasa ny fanafihana, na dia eo aza izany
fiarovana
Ny fanesorana fotsiny ny Winbox dia ahafahanao miaro tena amin'ireo fanafihana ireo. Na dia eo aza ny fanamorana ny fitantanana amin'ny Winbox, dia tsara kokoa ny mampiasa ny protocol SSH.
Source: www.habr.com