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

IoT 2个月前 admin
136 0 0


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

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



背景






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

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

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


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

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



关于CVE-2019-17621





根据发布的CVE信息公告来看,是由于D-Link DIR-859 1.05和1.06B01款路由器,因为gena.cgi导致攻击者可以进行远程命令注入得到root Shell。并且具体的细节也展示了一些,比如这个漏洞是通过HTTP SUBSCRIBE方法请求访问UPnP服务来攻击的。物联网安全实战从零开始-CVE-2019-1762

首先我们需要先下载固件:固件下载(https://drivers.softpedia.com/get/Router-Switch-Access-Point/D-Link/D-Link-DIR-859-RevA1-Router-Firmware-106B01.shtml) 如果没有环境,可以去搜索一下物联网安全常用的工具(比如:qemu、firmadyne、firmAE、pwntools以及其他协议工具等),网上有很多安装教程,跟着走一遍。安装好环境后,我们就开始吧。


漏洞分析




Binwalk是一款通过自定义签名,提取规则和插件模块,分析和提取固件映像的工具。下载完固件后,binwalk -Me 固件名 可以递归提取文件系统。


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


解压完后,我们进入squashfs文件系统文件夹。根据CVE信息公告的gena.cgi。我们查找一下文件,发现find命令没有找到gena.cgi。我们继续查找一下字符串,发现httpsvcs.php中对cgibin进行软连接命令为gena.cgi。那我们直接分析hotdocs目录下的cgibin文件。


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


使用file命令查看路由器文件系统中的busybox,可以知道是静态链接的mips32程序。使用readelf命令可以知道程序是大端序。

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

打开IDA Pro进行分析,根据前面CVE发布的信息,我们在字符串窗口(快捷键shift+F12)搜索“gena.cgi”,点击第二行进入。

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


可以看到存放字符串的变量在只读数据段,我们可以查看一下哪些函数引用了这个变量。对着变量按“x”查看交叉引用,发现main函数使用了这个变量。

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


点击进入main函数,发现有好多以.cgi命名的字符串,并且都是通过strcmp函数与v3变量进行比较。如果符合,则进入相应的cgi执行函数。进入genacgi_main函数看一下,cgi执行的相关流程。


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


进入genacgi_main函数后,程序首先使用getenv函数获取请求头方法和URI,并将URI?的位置赋值给v27。然后比较v27后面的9字节是否等于“?service=”字符串。然后将service后面的参数位置赋值给v29。至此,v29指向用户控制的参数位置。

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


判断请求方法是否是“SUBSCRIBE”和“UNSUBSCRIBE”,如果是“UNSUBSCRIBE”走下图的流程。

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


否则走“SUBSCRIBE”流程,如下图所示。我们观察一下俩个流程,发现大体相同。根据CVE信息公告和下图中的“%s/%s.sh”判断,攻击流程走下面方式。那么我们重点分析一下“SUBSCRIBE”流程。

首先将v29(即service后面参数位置)的指针赋值给v0,然后getenv获取一些“SERVER_ID”、“TIMEOUT”、“NT”等等。我们重点关注用户可控输入点,即v0。程序然后进行一些http属性判断,timeout格式等等,待会编写exp要注意。然后使用sprintf函数,将一整串格式化字符串放进了v36变量中。然后调用了xmldb_ephp函数,它的参数分别是0、0、v36和标准输出。

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

进入该函数,发现获得了字符串长度后,又进入了sub_41424c函数。最一开始传进来的v36这边变成了第四个参数。

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


进入后,发现只有sub_413850函数调用了a4(即原来的v36),那么我们进入sub_413850

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


我们发现字符串被socket流传给了a1,也是就说用户的输入的数据肯定会被送到cgi程序去执行,其实这里动态调试的话是send给了一个socket,最后解析传给了“/htdocs/upnp/run.NOTIFY.php”。


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


往前看sub_41376C可以看到socket的fd指针


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


    我们打开“/htdocs/upnp/run.NOTIFY.php”文件进行分析,发现对传入数据method做了判断,“SUBSCRIBE”方法中的处理函数GENA_subscribe_new对“$SHELL_FILE”进行了操作,而“UNSUBSCIRBE”没有对shell_file进行操作。这也侧面证明了前面分析的“UNSUBSCRIBE”流程,因为没有对用户输入数据进行处理,所以不能最后达到攻击效果。shell_file是用户可以控制的输入点,我们根据shell_file进行跟进。


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

发现gena.php中对GENA_subscribe_new函数进行了定义,我们跟进去看看。


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


发现又调用了GENA_notify_init函数,继续跟


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

最终GENA_notify_init函数对用户的输入shell_file进行了操作。执行了“rm -f shell_file_name”,既然shell_file用户可控,且没有进行过滤处理,我们直接可以使用"``"符号绕过执行我们想要执行的命令。绕过最方便。


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


漏洞利用





    那么我们按照前面分析的格式编写exp,模拟发送包,uri中service=后面的参数我们可控,直接使用telnetd -p 1235启动telnetd服务在1235端口,随后我们攻击机使用telnet连接就可以获得shell了。

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

访问靶场仿真的Dlink路由,看是否成功

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

我们使用exp攻击进行测试,拿到shell,运行命令测试

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

这时,路由器内已经运行起来了telnetd服务,证明我们的攻击有效。

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

总结




这一小节,我们复现分析了CVE-2019-17621,掌握了基础的命令注入漏洞。漏洞的产生原理是开发者没有过滤用户可控数据,导致攻击者恶意构造绕过检查的数据来执行shell命令。欢迎关注,下周精彩敬请期待!


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

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




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

版权声明:admin 发表于 2022年7月29日 下午7:25。
转载请注明:物联网安全实战从零开始-CVE-2019-1762 | CTF导航

相关文章

暂无评论

暂无评论...