TP-Link Archer路由器发现的漏洞可允许远程管理账户密码
2019-12-19 10:14:56 Author: www.4hou.com(查看原文) 阅读量:248 收藏

导语:本文将详细介绍运行固件版本3.16.0 0.9.1 v600c.0 Build 180124 Rel.28919n的TP-Link Archer C5 v4路由器中的0 day漏洞。

本文将详细介绍运行固件版本3.16.0 0.9.1 v600c.0 Build 180124 Rel.28919n的TP-Link Archer C5 v4路由器中的0 day漏洞。目前,该漏洞已被命名为CVE-2017-7405,并已由TP-Link发布,你可以在此篇文章的末尾获取补丁的链接。

互联网路由器是连接我们工作,服务和休闲的无所不在的设备,已经成为每个家庭,企业和公共场所不可或缺的一部分。尽管它们对于我们与世界的连接至关重要,但它们却是我们每天使用的最不安全的设备之一。

在本文中, X-Force Red 实验室的Grzegorz Wypych研究人员(又名@ horac341 )发现了在TP-Link Archer C5(v4)路由器中发现的固件漏洞。这是一个0 day漏洞,以前没有报告过,并且可能影响家庭和企业环境。如果利用此路由器漏洞,则远程攻击者可以通过局域网(LAN)上的Telnet来控制路由器的配置,并通过LAN或广域网(WAN)连接到文件传输协议(FTP)服务器。

该漏洞被认为是至关重要的,因为它可以授予未经授权的第三方使用管理员特权访问路由器,而这是所有用户在该设备上的默认设置,而无需进行适当的身份验证。在使用此类路由器启用访客Wi-Fi的商业网络上,风险更大。如果将其放置在企业网络上,则受损的路由器可能成为攻击者的切入点,并且成为侦察和横向移动策略的前哨站。

此漏洞的发布遵循TP-Link负责任的披露流程,旨在帮助用户和防御者采取措施来缓解这些设备的风险。

密码溢出漏洞

在深入探究如何发现此漏洞之前,描述此漏洞的简短方法是使用户密码无效的易受攻击的HTTP请求。在各种各样的溢出漏洞中,当将比预期的字符串长度短的字符串作为用户密码发送时,密码值会失真为一些非ASCII字节。

但是,如果字符串太长,密码将完全无效,由空值代替。此TP-Link设备仅具有一种用户类型(具有root权限的管理者),并且所有进程均由用户在此访问级别下运行,这可以使攻击者以管理者的身份操作并接管设备。

触发路由器漏洞

当我们调查触发脆弱情况的原因时,我们可以看到,只需发送正确的请求即可获得对设备的访问权限,图1显示了我们用来举例说明这个触发器的HTTP请求。

我们这里有两种类型的请求:安全的和易受攻击的。对于对HTML内容的安全请求,必须验证两个参数:TokenID和JSESSIONID。但是,此处的通用网关接口(CGI)验证仅基于引用者的HTTP标头。如果它与IP地址或与tplinkwifi.net关联的域匹配,则路由器的主要服务HTTPD将识别为有效。

1.png

易受攻击的HTTP POST请求未验证所需的参数

如果该引用从标头中删除,请求将返回一个“禁止访问”响应。

2.png

从请求中删除的引用——HTTP响应返回“403禁止”

此漏洞以相同的方式影响HTTP POST和GET请求,当字符串长度超过允许的字节数时,管理密码无效。

3.png

HTTP GET请求同样会使密码无效

看看固件

此时,看到这些请求使密码无效后,我们想看一下设备的固件。由于固件并不总是在供应商的网站上可用,因此我们不得不从设备的闪存芯片中提取固件。

有了存储芯片的版本号,可以更轻松地在线查找有关它的更多信息,并且我们能够使用芯片夹和二进制文件分析工具BinWalk直接从芯片中提取固件。

4.png

使用BinWalk提取的路由器固件

请注意,在提取期间,有一个RSA私钥存储在内存中。访问Web服务时,此密钥用于加密和解密用户密码。

解压缩固件后,我们发现登录数据存储在rootfs / etc文件夹中。默认的用户名和密码非常弱。保留默认组合可以允许访问FTP服务器并授予控制台访问权限。如此弱的密码有很多访问权限,几乎任何人都可以猜到,而且不幸的是,它也是传播诸如Mirai之类的僵尸网络恶意软件的自动攻击的源头。

5.png

对路由器的root访问

通过root级访问,我们现在可以获得对二进制文件的一些控制。我们也有TFTP,所以我们下载了MIPS gdbServer,这是一个用于类Unix系统的控制程序,允许操作员从另一个系统远程调试其他程序。这样,调试器不需要驻留在同一设备上,只需要我们要调试的可执行文件驻留在目标系统上即可。

我们将此工具与IDA(一种多处理器反汇编器和调试器)结合使用,以进行静态和动态分析,因此我们可以找到路由器漏洞的来源,并通过此过程来说明如何在找到该漏洞并触发它。

下图显示了在IDA上查看的已解析HTTP标头的相关部分:

6.png

已解析的HTTP标头显示了引用程序的设置

请注意,此处使用函数strncmp来验证带有字符串tplinkwifi.net的Referrer标头。前面还验证了IP地址,附加调试器可以查看这些详细信息,确认这确实是一个可利用的路由器漏洞。

攻击请求

我们的下一步是检查当我们使用不同的字符串长度发送易受攻击的请求时,密码文件会如何处理。首先,我们尝试发送一个较短的字符串,只有几个字节。

7.png

使用较短的密码字符串发送HTTP GET请求

该短字符串通过并损坏了密码文件,结果是用户将无法登录,攻击者也将无法登录。此漏洞影响Telnet,FTP和Web服务。

8.png

被用户提交的短字节字符串损坏的密码文件

接下来,我们尝试发送长度超过允许字符数的密码。

9.png

发送一个很长的密码

这次,密码完全无效,并且该值现在为空。从现在开始,只使用“admin”作为用户名,即可访问TELNET和FTP,而无需输入任何密码,默认情况下,该用户名是设备上唯一可用的用户。

10.png

管理员密码已失效

其他漏洞

在无需真正身份验证即可获得管理员访问权限后,我们发现该特定设备还允许在WAN上配置FTP。此外,我们可以通过安全的HTTPS连接远程管理路由器,这也容易受到CGI攻击。如果被恶意第三方利用,此路由器漏洞的影响和影响可能是有害的。

攻击者不仅可以获得特权访问,而且合法用户也可以被锁定,并且不再能够通过用户界面登录Web服务,因为该页面将不再接受任何密码(用户不知道)。在这种情况下,受害者可能无法访问控制台,甚至无法访问shell程序,从而无法重新建立新密码。即使有办法设置新密码,下一个易受攻击的LAN/WAN/CGI请求也将再次使密码无效。因此,唯一的访问将是通过USB端口连接的FTP文件。

潜在影响的另一个方面是RSA加密密钥可能会失败,因为它不是设计用于空密码值的。

最重要的是,受害者的设备FTP(如果配置为在WAN上使用)和Telnet(仅LAN)可以完全暴露给攻击者。

易受攻击的路由器比比皆是:如何保护你的数据

最近在TP-Link路由器上的这一关键漏洞只是物联网(IoT)安全领域的冰山一角。如今,几乎每个家庭都使用路由器,但根据美国消费者协会(American Consumer Institute)的一项研究,六分之五的路由器因安全漏洞没有得到充分更新。当这些漏洞出现时,数百万家庭和企业用户将面临数据泄露的风险。不仅仅是文本信息会丢失,想想网络摄像头、婴儿监视器和其他家用连接设备使用同一路由器连接互联网的画面。

为了缓解这些风险,用户必须更加重视路由器的安全性,并且要做的第一件事就是更改默认密码。 如果设备不允许修改用户名和密码,那么这无疑是查看更多漏洞的可靠方法。使用默认设备的企业应采取缓解措施,并在可能的情况下对此类设备访问启用双因素身份验证(2FA)。

TP-Link修补程序

TP-Link已发布以下修补程序,以解决TP-Link Archer C5 v4版本和可能公开的其他版本上的此漏洞,我们建议尽快修补设备。

补丁地址:

Firmware for Archer C5 V4:

https://static.tp-link.com/2019/201909/20190917/Archer_C5v4190815.rar

Archer MR200v4:

https://static.tp-link.com/2019/201909/20190903/Archer%20MR200(EU)_V4_20190730.zip

Archer MR6400v4:

https://static.tp-link.com/2019/201908/20190826/Archer%20MR6400(EU)_V4_20190730.zip

Archer MR400v3:

https://static.tp-link.com/2019/201908/20190826/Archer%20MR400(EU)_V3_20190730.zip

本文翻译自:https://securityintelligence.com/posts/tp-link-archer-router-vulnerability-voids-admin-password-can-allow-remote-takeover/如若转载,请注明原文地址: https://www.4hou.com/vulnerable/22197.html


文章来源: https://www.4hou.com/vulnerable/22197.html
如有侵权请联系:admin#unsafe.sh