针对D-LINK的hnap命令执行补丁,引发作者的吐槽-华盟网

针对D-LINK的hnap命令执行补丁,引发作者的吐槽

华盟学院山东省第二期线下学习计划

针对D-LINK的hnap命令执行补丁,引发作者的吐槽

正如我在关于型号为DIR-890L路由器的HNAP漏洞修复的文章中提到的那样,今年年初,同样的漏洞在型号为DIR-645的路由中也被发现并且报道过了,该公司随后便发布了一个更新补丁。现在,D-Link公司同样为DIR-890L发布了一个更新补丁。

DIR-645和DIR-890L型号的路由器都是使用同样的补丁,所以我这里仅对DIR-890L进行测试。

尽管在我之前发表的文章中我将注意力集中在了命令行注入方面,这个补丁修复了很多的安全漏洞,这一切都源自于使用strstr去验证HNAP的SOAPAction信息头:

1、 使用未经认证的用户数据去调用system命令(命令行注入)

2、 使用未经认证的用户数据去调用sprintf命令(堆栈溢出

3、 未经认证的用户数据可以执行HNAP的特权指令(例如修改管理员的密码)

请您记住,D-Link公司在他们的安全公告上承认了上述所有的安全问题,因此我们可以很清楚地了解此类攻击的方向。

那么,他是否将sprintf命令堆栈溢出的问题解决了呢?

针对D-LINK的hnap命令执行补丁,引发作者的吐槽

当然没有解决。

那么他们解决了system命令调用的问题么?

针对D-LINK的hnap命令执行补丁,引发作者的吐槽

还是没有解决!

他们是否使用了strcmp函数去代替strstr函数来验证SOAPAction信息头?

针对D-LINK的hnap命令执行补丁,引发作者的吐槽

呵呵,到底是为什么?

他们解决所有这些基本问题的方法就是使用access函数去对SOAPAction是否有效,为了达到验证的目的,我们需确保/etc/templates/hnap/<SOAPAction>.php文件存在。

针对D-LINK的hnap命令执行补丁,引发作者的吐槽

好吧,这样做至少可以防止用户向sprintf命令和system命令注入任意的数据。

无论如何,在调用access命令之前,他们已经向源代码中添加了另一个sprintf命令;他们的更新补丁是防止一个未经认证的sprintf命令引起堆栈溢出,然而这个补丁却含有一个新的sprintf命令引发的堆栈溢出

但有趣的是:这个补丁并不能够阻止未经认证的用户像管理员一样执行完整的HNAP操作,因为这个补丁所能做的就是保证HNAP操作是有效的。没错,在他们自己的安全公告中,这些更新补丁并没有解决我们上面所列出的那些漏洞!

一个内部网络中,未经认证的用户可以随意在主机中查询信息这件事情,我相信没人会在乎,包括查看/修改系统设置,或者将路由器恢复为出厂设置等行为:

$ wget --header="SOAPAction: http://purenetworks.com/HNAP1/GetDeviceSettings/SetFactoryDefault" http://192.168.0.1/HNAP1

本文由 360安全播报 翻译,转载请注明“转自360安全播报”,并附上链接。
原文链接:http://www.devttys0.com/2015/04/what-the-ridiculous-fuck-d-link/

www.idc126.com

原文地址:https://exploits.77169.com/2015/20150414054559.shtm

本文由 华盟网 作者:怪狗 发表,其版权均为 华盟网 所有,文章内容系作者个人观点,不代表 华盟网 对观点赞同或支持。如需转载,请注明文章来源。
0

发表评论