Ранливоста на заднината во RouterOS става во опасност стотици илјади уреди

Ранливоста на заднината во RouterOS става во опасност стотици илјади уреди

Способноста далечински да се деградираат уредите базирани на RouterOS (Mikrotik) става во опасност стотици илјади мрежни уреди. Ранливоста е поврзана со труење на кешот DNS на протоколот Winbox и ви овозможува да вчитате застарен (со стандардно ресетирање лозинка) или изменет фирмвер на уредот.

Ранливоста на заднината во RouterOS става во опасност стотици илјади уреди

Детали за ранливост

Терминалот RouterOS ја поддржува командата за решавање за пребарување на DNS.

Ранливоста на заднината во RouterOS става во опасност стотици илјади уреди

Со ова барање се справува бинарен наречен разрешувач. Resolver е еден од многуте бинарни датотеки што се поврзуваат со протоколот Winbox на RouterOS. На високо ниво, „пораките“ испратени до пристаништето Winbox може да се пренасочат до различни бинарни датотеки во RouterOS врз основа на шема за нумерирање базирана на низа.

Стандардно, RouterOS ја има оневозможена функцијата на серверот DNS.

Ранливоста на заднината во RouterOS става во опасност стотици илјади уреди

Сепак, дури и кога функцијата на серверот е оневозможена, рутерот одржува сопствен DNS кеш.

Ранливоста на заднината во RouterOS става во опасност стотици илјади уреди

Кога правиме барање користејќи winbox_dns_request на пример example.com, рутерот ќе го кешира резултатот.

Ранливоста на заднината во RouterOS става во опасност стотици илјади уреди

Бидејќи можеме да го одредиме серверот DNS преку кој треба да оди барањето, внесувањето неточни адреси е тривијално. На пример, можете да конфигурирате имплементација на DNS сервер од Филип Клауссекогаш да одговара со запис А што ја содржи IP адресата 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()

Сега ако пребарувате на example.com користејќи Winbox, можете да видите дека DNS кешот на рутерот е отруен.

Ранливоста на заднината во RouterOS става во опасност стотици илјади уреди

Се разбира, poisoning 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()

Рутерот бара една дозвола, а ние враќаме пет. Рутерот не ги кешира правилно сите овие одговори.

Ранливоста на заднината во RouterOS става во опасност стотици илјади уреди

Очигледно, овој напад е корисен и ако рутерот делува како DNS сервер, бидејќи дозволува клиентите на рутерот да бидат нападнати.

Овој напад, исто така, ви овозможува да искористите посериозна ранливост: да ја намалите или да ја вратите верзијата на RouterOS. Напаѓачот ја рекреира логиката на серверот за ажурирање, вклучувајќи го и дневникот за промени, и го принудува RouterOS да ја согледа застарената (ранлива) верзија како актуелна. Опасноста овде лежи во фактот дека кога верзијата е „ажурирана“, администраторската лозинка се враќа на стандардната вредност - напаѓачот може да се најави во системот со празна лозинка!


Нападот е доста работен и покрај тоа што авторот имплементира уште неколку вектори, вклучувајќи ги и оние поврзани со вградување задна врата во фирмверот, но ова е веќе излишна техника и нејзината употреба за нелегитимни цели е нелегална.

заштита

Едноставното оневозможување на Winbox ви овозможува да се заштитите од овие напади. И покрај практичноста на администрацијата преку Winbox, подобро е да се користи протоколот SSH.

Извор: www.habr.com

Додадете коментар