0x00.前言
ipTIME在韩国的市场占有率高达60%-70%,是韩国市场最具代表性的物联网品牌。
设备型号:IpTime C200
漏洞固件版本:1.058及之前版本
修复固件版本:1.060或更高版本
固件下载地址:http://iptime.com/iptime/?pageid=1&page_id=126&keyword=C200&uid=24015
之前我们分析了很多路由器的漏洞,相信很多人都已经有分析思路了,那么接下来我们来找一个摄像头的漏洞来进行分析。在CVE
网站进行搜索,得到如下数据:
当我们逐级去查看详情时,可以发现两个问题:
- 很多漏洞都是
1day
漏洞 - 摄像头的很多固件无法从官网获取
根据上述问题,我们选择编号为CVE-2021-26614
的ipTIME
摄像头的1day
进行分析,同时讲解一下1day
漏洞的分析技巧。
0x01.漏洞信息
根据链接跳转,查看相关描述信息。
根据描述信息可以得到如下信息:
- 漏洞固件版本:1.058及之前版本
- 修复固件版本:1.060或更高版本
- 漏洞触发应用
iux_get.cgi
,PS:描述中写错了
0x02.环境搭建
对于1day
分析用的方式用的最多的方式就是补丁包对比分析,通过上面的描述可以很快定位到具体的固件版本及漏洞应用,接下来使用对比工具进行对比分析,对于不同的补丁使用的对比分析工具也不尽相同。
- 文本类(代码,文档等):
diff
,Beyond Compare 4
等 - 二进制应用:
bindiff
等
通过产生漏洞的应用可以知道是一个二进制应用,所以我们这里简单说一下bindiff
的安装及使用,通过链接https://www.zynamics.com/software.html
可以下载对应版本的bindiff
,这里我们安装的是bindiff 7
,主要是原因是bindiff7
内置java
环境。
下载bindiff7.msi
后,直接双击安装即可。启动bindiff
配置IDA
应用路径,这里我们使用的是IDA 7.5
绿化版。
配置完成后,在IDA
中也会同步出现bindiff
插件,我们可以选择使用bindiff
应用对比,也可以直接在IDA
中进行对比。
0x03.漏洞分析
根据链接http://iptime.com/iptime/?pageid=1&page_id=126&keyword=C200&uid=24015
下载两个版本的固件。
固件没有进行加密处理,可以直接使用binwalk
进行提取。
根据漏洞应用进行grep
检索。
可以很快的定位到对应的应用,这时我们用IDA
分别打开两个版本的iux_get.cgi
,使用bindiff
插件进行对比,查看改动的位置。PS:bindiff
对比依赖IDA
生成的.idb
文件
使用bindiff
插件打开1.060
版本的iux_get.cgi
使用IDA
生成的idb
文件。
通过bindiff
的对比,可以知道修改代码的位置是main
函数的位置,Similarity
比1.00
越小,说明代码修改的越多,1.00
代表没有修改。
这里我们也可以直接使用bindiff
应用分别加载两个版本的idb
文件,来进行查看分析。
这里同样可以清晰的看到代码修复的位置。
可以看到删除了一个debug
相关的逻辑,直接看F5
生成伪C
代码。
可能猜测是由于sub_409748
函数造成的问题,进入该函数需要满足有cam
和debug
键值,双击跟进查看。
可以看到传递的值如果包含cmd
,则会执行命令,并且通过上面的debug
我们可以猜测应该是用于debug
调试的代码,并且只要满足传递的键aaksjdkfj
对应的值为11dnjsrurelqjrm22
,即可满足条件(疑似厂商预留后门)。
0x04.总结
通过上面我们已经很清晰的知道漏洞触发需要的条件,由于没有实体设备,所以这里并没有具体的执行效果。这里重点讲解了分析1day
常用的分析技巧,可以帮助大家更快的定位产生漏洞的位置和编写POC
,EXP
。