mirror of
https://github.com/Mr-xn/Penetration_Testing_POC.git
synced 2026-10-24 17:04:31 +00:00
112 lines
5.6 KiB
Markdown
112 lines
5.6 KiB
Markdown
# 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`网站进行搜索,得到如下数据:
|
|||
|
|

|
|||
|
|
|
|||
|
|
当我们逐级去查看详情时,可以发现两个问题:
|
|||
|
|
|
|||
|
|
- 很多漏洞都是`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`。
|