欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

模糊测试与漏洞利用实战:MikroTik无需认证的远程代码执行漏洞(CVE-2018–7445)(上)

来源:本站整理 作者:佚名 时间:2019-03-18 TAG: 我要投稿

一、总览
1. CVE-2018-7445是SMB服务二进制文件中存在的栈缓冲区溢出漏洞,存在于MikroTik RouterOS 6.41.3/6.42rc27之前的所有版本和体系结构中。
2. 该漏洞使用Cisco Talos的Mutiny模糊测试工具通过Dumb Fuzzing的方式发现,并在大约1年前报告和修复。
3. 易受攻击的二进制文件没有使用栈金丝雀保护(Stack Canaries)实现编译。
4. 在漏洞利用中,使用ROP将堆标记为可执行文件,并跳转到堆中的固定位置。堆基址不是随机的。
5. 在2018年,使用Dumb Fuzzing测试方法,发现了目标中的漏洞,但我确定在2019年已经不存在此类漏洞。
6. 本文主要描述了从目标选择到漏洞发现再到漏洞利用的一个完整过程。
二、简介
在过去几年中,安全研究人员在MikroTik RouterOS设备中发现并报告的漏洞数量呈现出猛增的趋势。从CIA Vault 7泄露的内部Web服务器远程缓冲区溢出漏洞,到Kirils Solovjovs(来自Possible Security)和Jacob Baines(来自Tenable)报告的导致实现远程攻击的大量其他漏洞。
近期,在Zerodium的漏洞利用收购计划中,MikroTik被加入到符合条件的路由器品牌列表之中。该计划将在1个月的时间内,收集远程代码执行(RCE)漏洞,并给予发现者10万美元的奖励。这可能反映出,安全研究人员对MikroTik产品及其安全态势越来越感兴趣。
我们希望这篇文章能为正在进行的MikroTik RouterOS漏洞研究做出一点贡献。我将详细描述我与我在Core Security的同事Juan共同寻找并利用CVE-2018-7445漏洞的全过程,这是MikroTik RouterOS的SMB服务中的一个远程缓冲区溢出漏洞,可以被未经身份认证的攻击者触发。
我们知道,漏洞很容易被找到,漏洞的利用也很简单。因此,我们发布本文的目的是为大家提供详细的发现漏洞与编写漏洞利用的心路历程,希望能对一些内存损坏漏洞研究者,或者其他漏洞挖掘的入门者有所帮助。我们将尝试在实际场景中,通过网络服务发现漏洞,并为其编写漏洞利用程序。
原始通告可以在这里找到。
声明:目前我已不再就职于Core Security,因此本文的观点不代表公司的观点。
三、准备工作
在所有运行着6.41.3/6.42rc27之前版本RouterOS的体系结构和设备中,都存在此漏洞。因此,我们准备工作的第一步,就是找到一个易受攻击的系统环境。
MikroTik会维护以前发布的所有版本,并对它们进行存档,这使得我们创建环境的过程更加容易。当然,也可以下载RouterOS的Cloud Hosted Router版本,该版本可以作为具有完整RouterOS功能的虚拟机提供。这样一来,就允许研究人员在x86-64架构中运行RouterOS,而无需实际的硬件设备。
我们从这里获得6.40.5版本的Cloud Hosted Router,并在VirtualBox上创建虚拟机。



默认管理员帐户是admin,其默认密码为空。

RouterOS控制台是一个受限制的环境,不允许用户在预先定义的配置选项集之外执行任何命令。
如果要进行漏洞的发现,需要启用SMB服务,可以通过ip smb set enabled=yes命令来实现。

请注意,该服务在默认情况下是没有启用的,这就使得该漏洞被利用的可能性降低很对。此外,我们不建议将SMB服务暴露在公网上。但是,也不排除内部网络中存在内部攻击者,可能有权访问此服务。
受限制的控制台非常不适合于我们的漏洞研究工作,因此在挖掘漏洞之前,我们最好能拥有完整的Shell访问权限。Kirils Solovjovs发表了针对RouterOS越狱的广泛研究,并发布了可以针对6.40.5版本实现越狱的工具。在本文中,重复一些基本的细节是没有意义的,建议各位读者可以前往Kirils的网站查看,或者阅读Jacob Baines发表的关于最新版本的文章。需要提醒的是,6.40.5的入口点目前已经被修补。
对RouterOS 6.40.5版本进行越狱的过程非常简单,只需要克隆mitrotik-tools存储库,并在我们的虚拟机中运行交互式的exploit-backup/exploit_full.sh漏洞利用即可。

最后,可以从这里下载预编译版本的GDB,并使用FTP将其上传到系统。

我们通过Telnet方式连接到设备,从而允许附加到正在运行的进程中,并对其进行正确调试。

现在,我们准备开始寻找网络服务中的漏洞。
四、目标选择
在RouterOS中运行了许多服务,其中包含一些例如HTTP、FTP、SSH和Telnet在内的常见服务,以及一些特定于RouterOS的服务,例如端口2000上运行的带宽测试服务。

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载