Files

112 lines
5.6 KiB
Markdown
Raw Permalink Normal View History

2026-10-15 20:25:47 +08:00
# CVE-2021-26614 ipTIME摄像头1day分析
> 0431物联卫士实验室
> 来源:https://www.iotsec-zone.com/article/135
## 0x00.前言
> ipTIME在韩国的市场占有率高达60%-70%,是韩国市场最具代表性的物联网品牌。
>
> 设备型号:IpTime C200
>
> 漏洞固件版本:1.058及之前版本
>
> 修复固件版本:1.060或更高版本
>
> 固件下载地址:[http://iptime.com/iptime/?pageid=1&page_id=126&keyword=C200&uid=24015](http://iptime.com/iptime/?pageid=1&page_id=126&keyword=C200&uid=24015)
之前我们分析了很多路由器的漏洞,相信很多人都已经有分析思路了,那么接下来我们来找一个摄像头的漏洞来进行分析。在`CVE`网站进行搜索,得到如下数据:
![0.png](https://www.iotsec-zone.com/images/MdImg/4bec61a665e3340e246033f2e006c1a8.png)
当我们逐级去查看详情时,可以发现两个问题:
- 很多漏洞都是`1day`漏洞
- 摄像头的很多固件无法从官网获取
根据上述问题,我们选择编号为`CVE-2021-26614`的`ipTIME`摄像头的`1day`进行分析,同时讲解一下`1day`漏洞的分析技巧。
![1.png](https://www.iotsec-zone.com/images/MdImg/0666f6fcc80f655610f2ab07e7031d49.png)
## 0x01.漏洞信息
根据链接跳转,查看相关描述信息。
![2.png](https://www.iotsec-zone.com/images/MdImg/241a6b7a1c2347c9819d266aa84441e6.png)
根据描述信息可以得到如下信息:
- 漏洞固件版本: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`环境。
![3.png](https://www.iotsec-zone.com/images/MdImg/bcc47d917c3699ace5565d59c558fa4b.png)
下载`bindiff7.msi`后,直接双击安装即可。启动`bindiff`配置`IDA`应用路径,这里我们使用的是`IDA 7.5`绿化版。
![4.png](https://www.iotsec-zone.com/images/MdImg/5069fad49cd0d985c614a7e9a1ff4213.png)
配置完成后,在`IDA`中也会同步出现`bindiff`插件,我们可以选择使用`bindiff`应用对比,也可以直接在`IDA`中进行对比。
## 0x03.漏洞分析
根据链接`http://iptime.com/iptime/?pageid=1&page_id=126&keyword=C200&uid=24015`下载两个版本的固件。
![5.png](https://www.iotsec-zone.com/images/MdImg/38c0b8e09492f71a25789fe599cfa793.png)
![6.png](https://www.iotsec-zone.com/images/MdImg/1237f0fe1579ce06421dfde58228f072.png)
固件没有进行加密处理,可以直接使用`binwalk`进行提取。
![7.png](https://www.iotsec-zone.com/images/MdImg/27b161ba193b283647d8994419abe8de.png)
根据漏洞应用进行`grep`检索。
![8.png](https://www.iotsec-zone.com/images/MdImg/48ccad99f15abfc1bbbc42ffe790f18d.png)
可以很快的定位到对应的应用,这时我们用`IDA`分别打开两个版本的`iux_get.cgi`,使用`bindiff`插件进行对比,查看改动的位置。PS:`bindiff`对比依赖`IDA`生成的`.idb`文件
![9.png](https://www.iotsec-zone.com/images/MdImg/ccf78865d03a2d4ef5cd3ea131842ec8.png)
使用`bindiff`插件打开`1.060`版本的`iux_get.cgi`使用`IDA`生成的`idb`文件。
![10.png](https://www.iotsec-zone.com/images/MdImg/f25490d24ff5163e9aaa873c40df1c45.png)
![11.png](https://www.iotsec-zone.com/images/MdImg/be51060184217db0712d55c22e5b356b.png)
![12.png](https://www.iotsec-zone.com/images/MdImg/b09f4e961f2ebe5134dac5406d9ac89e.png)
通过`bindiff`的对比,可以知道修改代码的位置是`main`函数的位置,`Similarity`比`1.00`越小,说明代码修改的越多,`1.00`代表没有修改。
![13.png](https://www.iotsec-zone.com/images/MdImg/1570bae2e5a5481f16c70f9a5fdf71c5.png)
这里我们也可以直接使用`bindiff`应用分别加载两个版本的`idb`文件,来进行查看分析。
![14.png](https://www.iotsec-zone.com/images/MdImg/f39472997906805b0d4a3f1b4fe3ad5d.png)
![15.png](https://www.iotsec-zone.com/images/MdImg/ee5c0b44388c03b19f659d2c071f3dd5.png)
这里同样可以清晰的看到代码修复的位置。
可以看到删除了一个`debug`相关的逻辑,直接看`F5`生成伪`C`代码。
![16.png](https://www.iotsec-zone.com/images/MdImg/a3292d56b1aa8f6fab3369605fa73b40.png)
可能猜测是由于`sub_409748`函数造成的问题,进入该函数需要满足有`cam`和`debug`键值,双击跟进查看。
![17.png](https://www.iotsec-zone.com/images/MdImg/1b7cdb4f7b7446b02ee36fdf5ea60e1a.png)
可以看到传递的值如果包含`cmd`,则会执行命令,并且通过上面的`debug`我们可以猜测应该是用于`debug`调试的代码,并且只要满足传递的键`aaksjdkfj`对应的值为`11dnjsrurelqjrm22`,即可满足条件(疑似厂商预留后门)。
![18.png](https://www.iotsec-zone.com/images/MdImg/b87a54335bdef0eeede984ea8abd6534.png)
## 0x04.总结
通过上面我们已经很清晰的知道漏洞触发需要的条件,由于没有实体设备,所以这里并没有具体的执行效果。这里重点讲解了分析`1day`常用的分析技巧,可以帮助大家更快的定位产生漏洞的位置和编写`POC`,`EXP`。