Backport vundebleco en RouterOS metas centojn da miloj da aparatoj en risko

Backport vundebleco en RouterOS metas centojn da miloj da aparatoj en risko

La kapablo malproksime malaltigi aparatojn bazitajn sur RouterOS (Mikrotik) riskas centojn da miloj da retaj aparatoj. La vundebleco estas rilata al veneniĝo de la DNS-kaŝmemoro de la protokolo Winbox kaj permesas al vi ŝargi malmodernan (kun defaŭlta pasvorta restarigo) aŭ modifitan firmvaron sur la aparato.

Backport vundebleco en RouterOS metas centojn da miloj da aparatoj en risko

Detaloj pri vundebleco

La RouterOS-terminalo subtenas la solvan komandon por DNS-serĉo.

Backport vundebleco en RouterOS metas centojn da miloj da aparatoj en risko

Ĉi tiu peto estas pritraktata de duuma nomita solvilo. Resolver estas unu el multaj binaroj, kiuj konektas al la Winbox-protokolo de RouterOS. Je alta nivelo, "mesaĝoj" senditaj al la Winbox-haveno povas esti direktitaj al diversaj binaroj en RouterOS surbaze de tabel-bazita numera skemo.

Defaŭlte, RouterOS havas la funkcion de DNS-servilo malŝaltita.

Backport vundebleco en RouterOS metas centojn da miloj da aparatoj en risko

Tamen, eĉ kiam la servila funkcio estas malŝaltita, la enkursigilo konservas sian propran DNS-kaŝmemoron.

Backport vundebleco en RouterOS metas centojn da miloj da aparatoj en risko

Kiam ni faras peton uzante winbox_dns_request ekzemple example.com, la enkursigilo konservos la rezulton.

Backport vundebleco en RouterOS metas centojn da miloj da aparatoj en risko

Ĉar ni povas specifi la DNS-servilon tra kiu la peto devas iri, enigi malĝustajn adresojn estas bagatela. Ekzemple, vi povas agordi DNS-servilan efektivigon de Filipo Klauspor ĉiam respondi per A-rekordo enhavanta la IP-adreson 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()

Nun se vi serĉas ekzemple.com uzante Winbox, vi povas vidi, ke la DNS-kaŝmemoro de la enkursigilo estas venenita.

Backport vundebleco en RouterOS metas centojn da miloj da aparatoj en risko

Kompreneble, veneni example.com ne estas tre utila ĉar la enkursigilo fakte ne uzos ĝin. Tamen, la enkursigilo devas aliri upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com kaj download.mikrotik.com. Kaj danke al alia eraro, eblas veneni ilin ĉiujn samtempe.

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()

La enkursigilo petas unu permeson, kaj ni donas kvin reen. La enkursigilo ne konservas ĉiujn ĉi tiujn respondojn ĝuste.

Backport vundebleco en RouterOS metas centojn da miloj da aparatoj en risko

Evidente, ĉi tiu atako ankaŭ estas utila se la enkursigilo agas kiel DNS-servilo, ĉar ĝi permesas ataki klientojn de la enkursigilo.

Ĉi tiu atako ankaŭ ebligas al vi ekspluati pli gravan vundeblecon: malaltgradigi aŭ retroporti la version de RouterOS. La atakanto rekreas la logikon de la ĝisdatiga servilo, inkluzive de la ŝanĝprotokolo, kaj devigas RouterOS percepti la malmodernan (vundeblan) version kiel aktuala. La danĝero ĉi tie kuŝas en la fakto, ke kiam la versio estas "ĝisdatigita", la administranto pasvorto estas restarigita al la defaŭlta valoro - atakanto povas ensaluti en la sistemon kun malplena pasvorto!


La atako sufiĉe funkcias, malgraŭ tio автор efektivigas plurajn pliajn vektorojn, inkluzive de tiuj rilataj al enkonstruante malantaŭan pordon en la firmvaro, sed ĉi tio jam estas superflua tekniko kaj ĝia uzo por kontraŭleĝaj celoj estas kontraŭleĝa.

protekto

Simple malŝalti Winbox permesas vin protekti vin kontraŭ ĉi tiuj atakoj. Malgraŭ la komforto de administrado per Winbox, estas pli bone uzi la SSH-protokolon.

fonto: www.habr.com

Aldoni komenton