CVE-2017-17215复现(华为HG532命令执行)
前言
本文对 CVE-2017-17215
的复现过程进行了记录,该漏洞位于华为 HG532
路由器,在 UPnP
服务中存在 NewStatusURL
和 NewDownloadURL
标签中的命令注入。通过向端口 37215
,地址为 /ctrlt/DeviceUpgrade_1
发送 POST
报文进行漏洞的触发。整体而言,这个漏洞确实是目前复现过最简单的了,但自己在做的时候依然踩了一些坑…😅
固件链接
固件链接:https://pan.baidu.com/s/1bhUyY-b6rxlAj8pG3cFFjQ?pwd=98uv
提取码:98uv
漏洞定位
根据漏洞披露可知,在启动 UPnP
服务时,存在命令注入。
用 binwalk
将固件解压后,把文件系统中 /bin
目录下的 UPnP
程序给拷贝出来,使用 IDA
分析定位漏洞点时,我的思路是先对system
函数交叉引用看看,既然是命令注入,那大概率是 snprintf + system
造成的。
在对 system
交叉引用到最后一个时,果然发现了漏洞点
这里把 v4
v5
和正常字符串拼接后,直接执行了 system
命令,由于 NewStatusURL
和 NewDownloadURL
标签中的内容是用户可控,导致了命令注入漏洞
搭建复现环境
启动 qemu
之前,我是先执行 net.sh
脚本,创建了一个网桥并且设置了 tap0
接口留给 qemu
!/bin/sh |
qemu
启动脚本如下
!/bin/bash |
我运行了启动脚本 boot.sh
,但发现一直没有回显,用 ps -ef
查看,发现是 7069
号进程卡住了
经过反复尝试,将启动脚本里的 vmlinux-2.6.32-5-5kc-malta
改成 vmlinux-2.6.32-5-4kc-malta
就能成功把 qemu
给启起来(原因我也没搞明白,不知道是不是这个下载内核的版本影响)
进入 qemu
后,首先执行 ip add
命令,确保能看到 IP
并可以正常和宿主机通信
宿主机执行 scp squashfs-root.tar.gz root@10.214.140.139:/root/
命令,将解压的文件系统传入 qemu
中(传输前最好把文件夹给压缩一下,传入后再解压)
提前用 ssh
再连一个到 qemu
上,后续执行程序 mic
时会把当前 shell
给卡住,所以先弄个 ssh
(其实命令加上 &
给它放到后台运行也没问题)
移动到刚传入的 /root/squashfs-root
目录,执行下面的命令来做出隔离环境
chmod -R 777 squashfs-root |
漏洞复现
按照漏洞披露信息来看,需要先打开 37215
端口,并向该端口下的 /ctrlt/DeviceUpgrade_1
地址发送数据包。
首先执行命令 grep -r "37215" ./
,查看字符串 37215
出现在了哪个文件里
发现 mic
包含了字符串 37215
,猜测是该程序打开了 37215
端口,因此将 mic
运行
执行一会发现这个 ssh
连上来的终端卡住了(刚刚的命令我都是在 ssh
上来的这个终端执行的),此时查看 IP
,发现网卡 eth0
的 IP
没了,网桥 br0
的 IP
被改成了 192.168.1.1
,也就导致 ssh
的连接断了。
执行 ifconfig eth0 192.168.110.112/24 up
,将网卡改回原本正常的 IP
宿主机执行 ping
命令,发现已经可以继续和 qemu
进行通信了(如果换回原本的 IP
还无法通信,确定一下虚拟机开的是不是桥接模式,我最开始用的是 NAT
,IP
改回正常的也依然无法通信,折腾了半天才发现要开桥接🥲)
在 qemu
中执行命令 netstat -aut
发现端口 37215
已经打开
在宿主机上执行 nmap -p- -Pn 192.168.110.112
,对 qemu
开放的所有端口进行扫描,此时也能够看到 37215
成功的暴露了出来
使用 exp
进行攻击验证,因为找了一下隔离环境中可用的命令,发现没有什么适合反弹 shell
的。这里就只用 mkdir zikh26
创建目录的命令来演示一下效果吧
import requests |
运行 exp.py
的时候,发现脚本卡住了,于是我手动 ctrl+c
给退出了
第二次运行的时候还是卡住,然后我想着执行命令 nmap -p- -Pn 192.168.110.112
扫一下,确保端口还开着。结果扫了一下,exp.py
就正常执行了…😶🌫️
疑问
漏洞在 UPnP
里,启动的是 mic
。那肯定是 mic
经过一系列调用后执行了 UPnP
,但是我看了一下 mic
里的字符串,以及 UPnP
字符串存在的那几个程序,并没有找到这之间的关系。因此这条漏洞链最终触发的完整细节我并没探究清楚,再加网上没有找到有文章对于这部分的分析,那就先……🥴
参考文章
Huawei Home Routers in Botnet Recruitment - Check Point Research
一些经典IoT漏洞的分析与复现(新手向) - IOTsec-Zone