华为HG532路由器RCE漏洞
BabyShark IoT安全 185浏览 · 2025-03-28 04:33

华为HG532路由器RCE漏洞

这个漏洞比较老了,而且复现起来没有特别复杂,漏洞编号是CVE-2017-17215,CVE-2017-17215CheckPoint团队披露的远程命令执行(RCE)漏洞,存在于华为HG532路由器中。

漏洞存在于设备实现的 UPnP (Universal Plug and Play) 服务中,具体是 DeviceUpgrade SOAP 接口处理不当,攻击者可以通过 NewDownloadURL 参数注入任意命令。由于设备未正确验证该参数,攻击者可以通过精心构造的请求,远程执行任意系统命令。

漏洞披露:https://research.checkpoint.com/2017/good-zero-day-skiddie/

对于没有硬件的来说(当然大多数都是没有硬件的),那么就需要进行仿真,通过qemu这个强大的虚拟化和仿真工具可以帮助完成仿真的过程,接下来对这个漏洞进行复现

复现环境:Ubuntu20.04TLS

工具准备

当然首先就是刚刚提到的qemu,因为需要模拟mips环境,下面是它的安装命令

然后是分离固件的binwalk以及其配套工具sasquatch,不然在提取固件的时候解压不出来文件系统等

现在仿真工具有了,那么还需要对仿真后的虚拟机进行通信也就是网桥br0,因为后来需要通过scp命令将宿主机的分解的文件系统传输上去

网络准备

安装网桥相关工具,然后设置

安装网络配置工具:apt-get install bridge-utils uml-utilities 开启:sysctl -w net.ipv4.ip_forward=1以便进行ip转发实现RCE

然后在网络接口配置文件/etc/network/interfaces里面进行输入

当然这里根据实际情况进行修改,我的网络接口是ens33,有些没有进行统一改名的网络接口名字叫eth0,只需要把ens33换个名字就行

配置完成只后还需要重启一下网络服务

分离固件

使用binwalk进行递归扫描提取

结果在解压的时候出现了一个报错

image-20250111192936535.png
图片加载失败


大概意思是capstone没有ARM64这个属性,查阅资料发现有一个Kali bug 报告的东西

image-20250111193425930.png
图片加载失败


既然没有这个属性那么久把对应的py文件关于ARM64换成ARM即可,再次尝试正常运行

本人分别在Ubuntu20.04和Ubuntu22.04进行了测试22.04没有相关报错,可能跟Ubuntu的版本有关

此时虽然分离出来了文件系统的镜像squashfs-root,但是里面可能会发现没有对于的文件系统里面是空的,那么就需要下载sasquatch,git下来之后root权限运行build.sh文件开始进行配置,但是其中可能也会遇到一个报错。

image-20250111194100365.png
图片加载失败


verbose 是在 error.h 中定义的全局变量,通过extern 声明。

image-20250111194527734.png
图片加载失败


然后在unsquashfs.c文件里面进行应用,并定义

image-20250111194625292.png
图片加载失败


当然进过测试在Ubuntu20.04上面不会报错,Ubuntu22.04可能会发生报错,解决报错之后就可以正常进行固件解压分理出文件系统了

漏洞出现在/bin目录下面的upnp这个文件

image-20250111194934587.png
图片加载失败


可以看见它是32位mips大端序并且没有任何的保护,当进行仿真的时候还需要下载,相关的内核以及镜像

下载地址:https://people.debian.org/~aurel32/qemu/mips/

需要下载该目录下的vmlinux-2.6.32-5-4kc-malta内核以及debian_squeeze_mips_standard.qcow2镜像文件

通过wget下载到和同一个目录下

启动qemu

写一个启动脚本去指定相应的内核以及镜像,命名为start.sh并加上执行权限,和刚刚下载的内核和镜像在同一个目录下

然后就可以运行脚本启动qemu了

image-20250111195619461.png
图片加载失败


启动需要一会时间,等出现登录语句的时候即可进行登录,账户和密码默认都是root

进去之后通过ip a命令查看一下网卡

image-20250111195814575.png
图片加载失败


发现是eth1,到配置文件/etc/network/interfaces修改成对于的名称

修改之后重启qemu,然后就可以通过scp命令把镜像传输进qemu了,根据对于的IP地址进行传输

分析漏洞文件

现在开始分析一下有漏洞的二进制文件,把它拖入ida

通过官方报告的字符串NewDownloadURL和NewStatusURL在ida里面进行查找

image-20250111200339575.png
图片加载失败


image-20250111200418163.png
图片加载失败


然后创建一个函数方便进行反编译查看

image-20250111200505916.png
图片加载失败


可以发现这里对输入的标签进行system命令执行,那么通过;{cmd};进行命令拼接即可实现RCE

image-20250111200555476.png
图片加载失败


复现漏洞

首先要更换原始镜像文件的根目录为从固件中提取的文件系统的根目录:

因为官方报告是通过37215这个端口来通过/ctrlt/DeviceUpgrade_1地址发送数据包,才能启用UPnP服务。grep -r '37215'命令可以查到,/bin/mic这个二进制文件中有这个端口,那么运行/bin/mic开启这个端口然后通过nc -vv 192.168.102.143 37215看看是否能成功连接上这个端口

成功连接上之后就可以通过poc来进行利用了

image-20250111205555604.png
图片加载失败


image-20250111205615498.png
图片加载失败


至此复现完成

2 条评论
某人
表情
可输入 255
1822117232998002
2025-05-02 10:36 0 回复
orz,babyshark
pfwqdxwdd
2025-04-23 12:59 0 回复
orz,babyshark