介绍

自vpnMentor于2018年5月发布其博客以来,已经差不多一年了,它确定了两个有趣的问题(CVE-2018-10561CVE-2018-10562),它们可以结合起来完全破坏GPON家用路由器。这些漏洞引起了很多关注,并被像Mettle,Muhstick,Mirai,Hajime,Satori等一堆僵尸网络武器化。那个博客感觉就像一个未完成的故事,所以我决定再多推GPON Home Gateway 。

像往常一样,我的好奇心让我走了很长的路。通常,GPON光网络终端(ONT)设备通过其因特网服务提供商(ISP)分发给最终用户,以充当因特网接入的端点。我的研究发现至少有五家供应商生产可能容易受到攻击的GPON家庭网关。对Shodan和Zoomeye的搜索显示了大量潜在易受攻击的设备:

你可能会问,这怎么可能发生?尽管这些设备是由多个独立供应商生产的,但这些设备仍使用类似的固件。固件的任何差异都是由每个供应商进行的修改引起的,并且通常由ISP订购。但是,固件的核心保持不变。我能够通过分析不同ISP使用的多个固件来确认这一点。让我们比较来自不同固件包的Web根文件夹的内容:

GPON家庭网关的固件通常无法通过供应商的网站访问,它由ISP分发,通常无需用户操作即可自动更新,或者根本不更新。

telnet后门

通常,我们需要将一个调试器附加到正在运行的服务上,以便执行严重的错误搜索。这意味着我们必须访问路由器的控制台。使用Qemu完全仿真GPON Home Gateways的固件可能会让你大汗淋漓。我刚决定在eBay上买一个真正的设备。我得到的设备是由阿尔卡特朗讯生产的。它是基于ARM处理器的I-240W-Q GPON家庭网关(为armv5tel编译的固件):Feroceon 88FR131 rev 1(v5l)。

阿尔卡特朗讯I-240W-Q GPON家庭网关的端口扫描显示出一些特殊性。设备执行Telnet和SSH服务,为ISP提供远程接口,可能用于远程管理和故障排除。但是,默认情况下,这些接口是防火墙的。nmap扫描表明22 / TCP和23 / TCP端口已过滤:

整个事情看起来有点阴暗,所以我决定浏览WebMgr二进制文件,并寻找后门代码。WebMgr是GPON Home Gateway固件的一部分,负责设备的Web管理控制台。从简短的回顾中,“webLoginCheck”函数的以下块看起来很有希望:

因为webLoginCheck函数处理“ote”和“otd”命令,除了处理身份验证之外,我们还可以使用这些命令来启用或禁用后门代码。

通过发送简单的HTTP GET请求,我们实际上可以关闭telnet端口的防火墙:

通过发送以下命令,我们可以重新启用防火墙过滤:

接下来,我们需要弄清楚凭据。我们需要他们通过telnet登录。当然,我们可以尝试强制使用“登录/密码”对,但让我们通过查看“/ bin / telnetd”以逆向工程方式执行:

硬编码的密码对“root / admin”和“root / huigu309”就像他们应该的那样工作并提供对shell的访问:

“root”用户的相同凭据也被硬编码到Dropbear(SSH)服务中。

利用Web界面中经过身份验证的缓冲区溢出

现在我们可以访问路由器的控制台了,现在是时候查看不安全的C函数的使用了。在很多情况下,我们可以先调用这些并将用户的输入跟踪回HTTP请求处理例程。我们都知道这个功能:

用于将字符串复制到目标数组中。但是,我们应该始终记住strcpy()不检查缓冲区长度,并且可能会覆盖与预期目标相邻的内存区域。这是我们想要利用的确切行为,以便触发堆栈缓冲区溢出(BoF)。

让我们看一下用于处理“usb_Form”相关HTTP请求的子程序:

IDA Pro输出中,我们看到一堆参数容易受到攻击:“ ftpusername ”,“ ftppassword1 ”,“ ftpdirname ”,“ clientusername ”,“ clientpassword ”,“ urlbody ”,“ webdir ”。通过HTTP请求提供的用户输入由strcpy()复制,而不检查缓冲区长度。

让我们执行以下curl命令来触发DoS条件并强制GPON路由器重启:

为了使此漏洞利用工作,我们仍然必须依赖身份验证绕过技巧(CVE-2018-10561)或获取Web管理界面的“登录/密码”对。

我们可以对“WebMgr”二进制文件执行几个安全级别检查,以找到最简单的利用方式,并将PoC转换为功能完备的漏洞:

因此,我们在GPON路由器上启用了部分地址空间布局随机化(ASLR)。堆栈,虚拟动态共享对象(VDSO)页面和共享内存区域的位置是随机的。但堆不是随机的!如果我们可以找到存储在堆上的请求的副本,我们可以通过“pc”寄存器修改跳转到它并触发shellcode执行。“WebMgr”堆是可执行的,看起来很有希望:

最后,我们得到了以下代码,它允许我们通过触发存储在堆上的shellcode来成功执行ASLR旁路的“tftpd”服务:

https://github.com/tenable/poc/blob/master/gpon/nokia_a-l_i-240w-q/gpon_poc_cve-2019-3921.py

漏洞利用执行如下:

结论

在互联网连接的世界中,路由器是任何网络上最重要的设备。通常,家庭路由器是唯一将我们的私人网络和生活与互联网分开的边界设备。这个小巧闪烁的盒子可以解决持续的外部企图穿透您的网络并保护您的秘密安全。为了保持这种保护边界,路由器固件和硬件都需要不断升级和改进。只有更新的设备才能有效抵消攻击者的企图。对于现代攻击者来说,旧的,过时的设备是低悬的水果,对您的业务和个人隐私构成严重威胁。

根据Cyber​​-ITL研究人员最近的研究,大多数路由器不使用ASLR,Stack Canaries和Non-executable stack等软件安全功能。不幸的是,阿尔卡特朗讯I-240W-Q GPON家庭网关也不例外。由于缺乏软件安全功能以及糟糕的编码实践,因此可以运行老式的堆栈粉碎攻击来完全控制设备。

诺基亚现在是阿尔卡特朗讯I-240W-Q GPON家庭网关的官方供应商。我们已根据我们的漏洞披露政策向诺基亚安全团队报告了所有调查结果,他们已经针对所有受影响的设备发布了补丁。

原文地址 :https://medium.com/tenable-techblog/gpon-home-gateway-rce-threatens-tens-of-thousands-users-c4a17fd25b97

点击收藏 | 0 关注 | 2
  • 动动手指,沙发就是你的了!
登录 后跟帖