首页
社区
课程
招聘
[原创]CVE-2017-17215(华为HG532远程命令执行漏洞)复现学习
发表于: 2021-9-3 09:22 31668

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

2021-9-3 09:22
31668

固件和exp都已经放在这个地方了:https://gitee.com/p1piyang/backward-analysis/tree/master/

建议先通一遍文章再动手复现,复现之前一定要保存虚拟机快照,防止出现各种奇奇怪怪的问题

直接使用binwalk -Me HG532eV100R001C02B015_upgrade_main.bin命令来直接解压固件文件

image-20210902140525928

解压完成后,在固件同文件夹下可以看到解压出来的文件夹

文件夹中的squashfs-root就是我们需要的文件系统了,如果squashfs-root中没有下图的各种文件系统,就是你的binwalk有不完整,去看iot固件分析环境搭建

我们要让qemu虚拟机和我们的ubuntu互通。

安装网络配置工具

sudo vim 你一定会把!

内容改成如下,图下提供了复制粘贴的代码(贴心人)

如果没有这个文件直接创建就可以了,如果有的话将里边内容清空,然后写入下面脚本

然后依次执行如下操作

image-20210902142632713

如图所示,当前网卡为br0

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

先去下载debian-mips-qemu镜像文件,每次固件分析要注意对应大小端序的镜像文件(还是有设备的好)

下载地址:https://people.debian.org/~aurel32/qemu/mips/

image-20210902143029163

我们需要红框里的两个文件,然后在文件所在地方启动qemu

这里特别说明,最后一个参数-nographic带上是在终端中直接运行,不会弹出窗口运行,建议一定不要开,我这里开了之后这个窗口的返回快捷键和vmware的一模一样,就导致我只能在mac和qemu中间用,我回不去我的ubuntu了。

如果你的多次运行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

即可

image-20210902144039133

启动如上图,账号密码都是root

启动后尝试,ping baidu.com 和 ubuntu

如果不通

查看网卡第一个是什么,一般都会是eth1

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

image-20210902145000649

第一次配置红框中一般是eth0,将红框中的内容修改为你的网卡名字

保存后使用下面指令重启eth1

再次尝试,如果还不行或者ifconfig发现eth1没有分配地址,重启ubuntu或者找原因,不行就恢复快照

如果成了的话是可以用ssh远程连接qemu虚拟机的

建议在ubuntu中使用ssh连接,比较方便

接下来将我们解压出来的文件系统拷贝到qemu

通过checkpoint报告中能看到关键字为ctrlDeviceupgrade,端口号为37215

image-20210902150556461

使用grep来查找

image-20210902150655267

两个都指向upnp这个文件,端口号指向mic这个文件

直接运行会出问题,我们切换根目录到拷贝进来的系统文件中

image-20210902151007290

然后先后运行upnp和mic

到这个地方mic已经运行成功了,放着不用管他了

使用lsof -i:37215可以查看端口是否运行

用下面命令来查看是否启动成功

image-20210902151834935

成功了就可以跑exp了

image-20210902152334531

与checkpoint不同的是,我把溢出的命令修改了(红框处,这里就是灵活使用了),蓝框处修改为qemu的ip

执行exp后 在mic界面可以看到
image-20210903104628727

ls被成功执行了。

Ida7.5可以反编译qemu

通过exp能发现,命令行放在了NewStatusURL标签下,在ida中通过字符串查找

image-20210903104706074

image-20210903104832016

49c的位置使用快捷间p可以创建函数,来反编译

image-20210903105148756

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

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

伪代码不可信,尽量还是通过汇编代码分析

倒推能发现,system的参数为0x42C+var_414($sp)

image-20210902161814086

0x42C+var_414($sp)为snprintf 的第一个参数,0x42C+var_40C($sp)为snprintf的第四个参数

image-20210902162128743

0x42C+var_40C($sp)的内容通过函数放到了0x42C+var_414($sp)

image-20210902162049228

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

,没有办法ATP_XML_GetChildNodeByName做具体分析,但通过网上一些师傅的文章,应该大差不差了

然后了解原理我们就可以通过闭合来实现命令运行了。

学习文章,希望师傅们多多指正

 
 
 
 
 
apt-get install bridge-utils uml-utilities
apt-get install bridge-utils uml-utilities
 
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
 
auto ens33
iface ens33 inet manual
up ifconfig ens33 0.0.0.0 up
 
auto br0
iface br0 inet dhcp
 
bridge_ports ens33
bridge_maxwait 0
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
 
auto ens33
iface ens33 inet manual
up ifconfig ens33 0.0.0.0 up
 
auto br0
iface br0 inet dhcp
 
bridge_ports ens33

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2021-9-3 10:52 被头顶flag编辑 ,原因: 内容有错
收藏
免费 5
支持
分享
最新回复 (6)
雪    币: 21580
活跃值: (6401)
能力值: (RANK:445 )
在线值:
发帖
回帖
粉丝
2
文章不错,但是大哥,你把文中奇怪的<img>标签弄一弄啊,现在这样看着很别扭。
2021-9-3 10:18
0
雪    币: 1060
活跃值: (366)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
3
胡一米 文章不错,但是大哥,你把文中奇怪的标签弄一弄啊,现在这样看着很别扭。
抱歉,第一次发,没注意我md的图片是img标签,已经改了
2021-9-3 11:04
0
雪    币: 185
活跃值: (262)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
请问原因分析中“Ida7.5可以反编译qemu”是什么意思呢,ida分析的程序是哪一个呀
2021-9-17 21:51
0
雪    币: 1060
活跃值: (366)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
wx_遵龙 请问原因分析中“Ida7.5可以反编译qemu”是什么意思呢,ida分析的程序是哪一个呀
upnp文件,上边分析exp的时候说了,关键字指向upnp文件,mic属于端口服务文件,
ida分析的是upnp文件
2021-9-23 11:11
0
雪    币: 217
活跃值: (351)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
师傅,你在配置qemu虚拟机的时候,macaddr=00:16:3e:00:00:01这个地址有什么说法吗?
2022-8-1 10:59
0
雪    币:
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
师傅,在qemu虚拟机里执行chroot报了 failed to run command是什么原因呀
2022-8-26 21:22
0
游客
登录 | 注册 方可回帖
返回
//