物联网安全实战从零开始-CVE-2019-20760

admin 2023年3月9日00:15:47评论67 views字数 3265阅读10分53秒阅读模式

本环境是蛇矛实验室基于"火天网演攻防演训靶场"进行搭建,通过火天网演中的环境构建模块,可以灵活的对目标网络进行设计和配置,并且可以快速进行场景搭建和复现验证工作。



物联网安全实战从零开始-CVE-2019-20760

背景


自 2005年国际电信联盟正式提出“物联网(IoT)”这一概念以来,物联网在全球范围内迅速获得认可,并成为信息产业革命第三次浪潮和第四次工业革命的核心支撑。同时,数以亿计的设备接入物联网,这些设备如今已渗透到我们生活的方方面面,从家居到工厂无处不在。一方面物联网设备使我们的生活更加便捷,而另一方面物联网安全事件频发,全球物联网安全支出不断增加。

    当前,大量物联网设备及云服务端直接暴露于互联网,这些设备和云服务端存在的漏洞一旦被利用,可导致设备被控制、用户隐私泄露、云服务端数据被窃取等安全风险,甚至会对基础通信网络造成严重影响。从2018年全球统计数据来看,路由器、视频监控设备暴漏数量占比较高。路由器暴漏数量超过3000万台,视频监控设备暴露数量超过1700万台,并且这些设备往后几年会一年比一年多,物联网安全的事件也会越来越多。由此,物联网安全行业需要大力发展,物联网安全人才的培养也刻不容缓。

物联网安全实战从零开始-CVE-2019-20760


蛇矛实验室在后续将利用火天网境系列靶场中的相关目标仿真和环境构建的特性,将持续发布关于“物联网安全-CVE实战分析”系列的文章来帮助大家入门物联网安全。




这一小节,我们将复现CVE-2019-20760。日常查询一下CVE信息,仔细阅读一下CVE发布的信息对我们的分析很有帮助。

物联网安全实战从零开始-CVE-2019-20760


根据CVE信息,我们知道了受影响的型号为NETGEAR R9000,并且漏洞产生版本在1.0.4.26之前,漏洞产生原因是认证绕过。CVE下面的链接是厂商发布的信息,我们点击进去看看。


物联网安全实战从零开始-CVE-2019-20760


厂商说明了漏洞产品型号,并且给出了修复后的固件连接,然后就没了。在复现分析漏洞的过程中,多寻找一些有用的信息会使我们的分析更加容易。


我们先下载固件:


固件下载1.0.4.26

(https://www.downloads.netgear.com/files/GDC/R9000/R9000-V1.0.4.26.zip)


物联网安全实战从零开始-CVE-2019-20760

漏洞分析



使用`binwalk -Me 固件名`提取文件系统,然后进入文件系统的`/etc/init.d/`文件夹,查看开机启动项。发现开机自启脚本是循环启动`/etc/rc.d/`目录下的程序。

物联网安全实战从零开始-CVE-2019-20760


而`/etc/rc.d/`目录下的程序全是`/etc/init.d/`目录下的软连接。这时发现开机自启程序有uhttpd程序,一般认证绕过都发生在web服务程序,所以猜测漏洞可能产生在uhttpd中。


物联网安全实战从零开始-CVE-2019-20760


全局搜一下有没有其他的web服务程序,发现确实只有uhttpd程序。并且uhttpd开机自启脚本中,默认启动的是/www/cgi-bin/uhttp.sh

物联网安全实战从零开始-CVE-2019-20760


查看一下`/www/cgi-bin/uhttp.sh`,我们发现了uhttpd程序的启动参数。

物联网安全实战从零开始-CVE-2019-20760


此时如果我们直接使用IDA Pro逆向分析uhttpd程序,过程可能会有点复杂。这次我们使用另一种思路,即补丁diff。通过厂商已经修复后的程序与产生漏洞的程序进行比较,找出厂商修改的点,这个修改前的点就是漏洞点。


我们需要先下载俩个版本的固件,前面下载了产生漏洞的固件,还需要一个修复后的固件。根据厂商发布的信息,我们知道了1.0.4.26之后的版本已经修复,我们直接下载其固件。


[固件下载1.0.4.28]

(https://www.downloads.netgear.com/files/GDC/R9000/R9000-V1.0.4.28.zip)


我们使用bindiff工具进行分析,bindiff是根据IDA Pro产生的数据库文件来进行比较的。所以在使用bindiff比较之前,我们需要俩个版本uhttpd的idb文件。我们使用ida打开程序后,关闭保存数据库文件就可以了。然后打开bindiff,新建工作区,然后new diff,分别选择俩个版本uhttpd程序的idb文件。

物联网安全实战从零开始-CVE-2019-20760


比较完成后,点击matched functions就可以查看比较结果了。下面的数据表格中,俩个版本的程序函数simiarity越接近1.00表示越相似。我们是要查找修复后的函数点,所以我们需要查找不为1.00的比较结果。这里需要注意以下,我们查找漏洞修复点,一定是修改了函数的逻辑,或增加代码或删除代码,亦或者修改程序的执行逻辑。虽然下面的好多函数都是0.66,但是我们点击进入发现是俩条汇编指令的不同,这里可能是不同编译器被ida解析时会有一点点指令差别,但是丝毫不影响程序的执行过程和结果。


物联网安全实战从零开始-CVE-2019-20760

比如下图中的uh_client_remove函数,俩个版本的函数差别仅仅是俩条汇编指令的差别,执行流程并不影响。


物联网安全实战从零开始-CVE-2019-20760


这里的uh_cgi_auth_check函数明显改变了程序的执行逻辑,所以这里很有可能漏洞修复前和修复后的差别。


物联网安全实战从零开始-CVE-2019-20760


IDA Pro打开uh_cgi_auth_check函数比较一下执行流程,发现确实是漏洞点,这里的snprintf将格式化字符串放入command变量中,随后执行了system(command)。很明显的命令注入,使用"``"就可以绕过进行命令注入,这里也说明了CVE给出的信息并不是很准确。知道了漏洞产生的原因,那么他是如何修复的呢,28版本将snprintf和system封装成了一个dni_system函数,并且使用execve函数对硬编码的命令进行执行,杜绝了用户可控数据传入到系统函数的情况。


物联网安全实战从零开始-CVE-2019-20760


下面简单分析一下, 用户数据是如何通过程序流程system函数的。


漏洞函数“uh_cgi_auth_check”,函数从request包中检索用户访问的uri,并与配置文件中字符串进行比较,如果不在,直接返回1。然后循环匹配“Authorization”字符串,如果有,则继续查找”basic“字符串。此时v13变量指向"basic..."字符串,v14获取字符串长度,然后使用uh_b64decode函数解码(v13+6)指向地址处的字符串。解码的字符串存放进变量s。v15则存放的是指向解码后的字符串中的":"指针。


物联网安全实战从零开始-CVE-2019-20760


如果指向":"的指针不为空,将执行snprintf将字符串写入command变量,并且使用system函数执行command变量。然后读取"/tmp/hash_result"文件中的内容,放入v3中。后续,比较用户名和密码是否与配置文件中的相同,如果相同,查找uri中的"/genie.cgi"位置,如果没找到则执行update_login函数并返回1。


注:分析后感觉这里可能还会有溢出漏洞,后续会测试一下。


物联网安全实战从零开始-CVE-2019-20760


上面执行流程如果失败后,打印返回包信息。


物联网安全实战从零开始-CVE-2019-20760


我们对着漏洞函数按"x",发现main函数调用了uh_cgi_auth_check函数。main函数中主要使用了uhttpd的源码,并做了一些修改。我们可以直接在网上下载uhttpd的源码,然后对照着uhttpd的源码进行逆向,这里就不做过多分析了。


物联网安全实战从零开始-CVE-2019-20760


物联网安全实战从零开始-CVE-2019-20760

漏洞复现


打开路由器,弹出登录界面,我们随意输入账号密码,这里我填的都是admin,然后使用burpsuite抓包。


物联网安全实战从零开始-CVE-2019-20760


构造一下poc,使用base64进行加密。


物联网安全实战从零开始-CVE-2019-20760

替换一下basic后面poc,点击send


物联网安全实战从零开始-CVE-2019-20760


查看一下路由器文件系统的文件,发现确实发生了命令注入。


物联网安全实战从零开始-CVE-2019-20760


物联网安全实战从零开始-CVE-2019-20760

总结


这一小节的复现比较简单,我们主要学习了使用bindiff来查找和分析漏洞的方法。这种方法在复现分析漏洞时经常使用,非常方便我们学习其他的漏洞知识。


物联网安全实战从零开始-CVE-2019-20760

物联网安全实战从零开始-CVE-2019-1762


物联网安全实战从零开始-CVE-2019-20760

物联网安全实战从零开始-CVE-2020-8423



蛇矛实验室成立于2020年,致力于安全研究、攻防解决方案、靶场对标场景仿真复现及技战法设计与输出等相关方向。团队核心成员均由从事安全行业10余年经验的安全专家组成,团队目前成员涉及红蓝对抗、渗透测试、逆向破解、病毒分析、工控安全以及免杀等相关领域


物联网安全实战从零开始-CVE-2019-20760



原文始发于微信公众号(蛇矛实验室):物联网安全实战从零开始-CVE-2019-20760

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月9日00:15:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   物联网安全实战从零开始-CVE-2019-20760http://cn-sec.com/archives/1234862.html

发表评论

匿名网友 填写信息