信息來(lái)源:4hou
本文將詳細(xì)介紹運(yùn)行固件版本3.16.0 0.9.1 v600c.0 Build 180124 Rel.28919n的TP-Link Archer C5 v4路由器中的0 day漏洞。目前,該漏洞已被命名為CVE-2017-7405,并已由TP-Link發(fā)布,你可以在此篇文章的末尾獲取補(bǔ)丁的鏈接。
互聯(lián)網(wǎng)路由器是連接我們工作,服務(wù)和休閑的無(wú)所不在的設(shè)備,已經(jīng)成為每個(gè)家庭,企業(yè)和公共場(chǎng)所不可或缺的一部分。盡管它們對(duì)于我們與世界的連接至關(guān)重要,但它們卻是我們每天使用的最不安全的設(shè)備之一。
在本文中, X-Force Red 實(shí)驗(yàn)室的Grzegorz Wypych研究人員(又名@ horac341 )發(fā)現(xiàn)了在TP-Link Archer C5(v4)路由器中發(fā)現(xiàn)的固件漏洞。這是一個(gè)0 day漏洞,以前沒(méi)有報(bào)告過(guò),并且可能影響家庭和企業(yè)環(huán)境。如果利用此路由器漏洞,則遠(yuǎn)程攻擊者可以通過(guò)局域網(wǎng)(LAN)上的Telnet來(lái)控制路由器的配置,并通過(guò)LAN或廣域網(wǎng)(WAN)連接到文件傳輸協(xié)議(FTP)服務(wù)器。
該漏洞被認(rèn)為是至關(guān)重要的,因?yàn)樗梢允谟栉唇?jīng)授權(quán)的第三方使用管理員特權(quán)訪問(wèn)路由器,而這是所有用戶(hù)在該設(shè)備上的默認(rèn)設(shè)置,而無(wú)需進(jìn)行適當(dāng)?shù)纳矸蒡?yàn)證。在使用此類(lèi)路由器啟用訪客Wi-Fi的商業(yè)網(wǎng)絡(luò)上,風(fēng)險(xiǎn)更大。如果將其放置在企業(yè)網(wǎng)絡(luò)上,則受損的路由器可能成為攻擊者的切入點(diǎn),并且成為偵察和橫向移動(dòng)策略的前哨站。
此漏洞的發(fā)布遵循TP-Link負(fù)責(zé)任的披露流程,旨在幫助用戶(hù)和防御者采取措施來(lái)緩解這些設(shè)備的風(fēng)險(xiǎn)。
密碼溢出漏洞
在深入探究如何發(fā)現(xiàn)此漏洞之前,描述此漏洞的簡(jiǎn)短方法是使用戶(hù)密碼無(wú)效的易受攻擊的HTTP請(qǐng)求。在各種各樣的溢出漏洞中,當(dāng)將比預(yù)期的字符串長(zhǎng)度短的字符串作為用戶(hù)密碼發(fā)送時(shí),密碼值會(huì)失真為一些非ASCII字節(jié)。
但是,如果字符串太長(zhǎng),密碼將完全無(wú)效,由空值代替。此TP-Link設(shè)備僅具有一種用戶(hù)類(lèi)型(具有root權(quán)限的管理者),并且所有進(jìn)程均由用戶(hù)在此訪問(wèn)級(jí)別下運(yùn)行,這可以使攻擊者以管理者的身份操作并接管設(shè)備。
觸發(fā)路由器漏洞
當(dāng)我們調(diào)查觸發(fā)脆弱情況的原因時(shí),我們可以看到,只需發(fā)送正確的請(qǐng)求即可獲得對(duì)設(shè)備的訪問(wèn)權(quán)限,圖1顯示了我們用來(lái)舉例說(shuō)明這個(gè)觸發(fā)器的HTTP請(qǐng)求。
我們這里有兩種類(lèi)型的請(qǐng)求:安全的和易受攻擊的。對(duì)于對(duì)HTML內(nèi)容的安全請(qǐng)求,必須驗(yàn)證兩個(gè)參數(shù):TokenID和JSESSIONID。但是,此處的通用網(wǎng)關(guān)接口(CGI)驗(yàn)證僅基于引用者的HTTP標(biāo)頭。如果它與IP地址或與tplinkwifi.net關(guān)聯(lián)的域匹配,則路由器的主要服務(wù)HTTPD將識(shí)別為有效。
圖1.易受攻擊的HTTP POST請(qǐng)求未驗(yàn)證所需的參數(shù)
如果該引用從標(biāo)頭中刪除,請(qǐng)求將返回一個(gè)“禁止訪問(wèn)”響應(yīng)。
圖2.從請(qǐng)求中刪除的引用——HTTP響應(yīng)返回“403禁止”
此漏洞以相同的方式影響HTTP POST和GET請(qǐng)求,當(dāng)字符串長(zhǎng)度超過(guò)允許的字節(jié)數(shù)時(shí),管理密碼無(wú)效。
圖3.HTTP GET請(qǐng)求同樣會(huì)使密碼無(wú)效
看看固件
此時(shí),看到這些請(qǐng)求使密碼無(wú)效后,我們想看一下設(shè)備的固件。由于固件并不總是在供應(yīng)商的網(wǎng)站上可用,因此我們不得不從設(shè)備的閃存芯片中提取固件。
有了存儲(chǔ)芯片的版本號(hào),可以更輕松地在線查找有關(guān)它的更多信息,并且我們能夠使用芯片夾和二進(jìn)制文件分析工具BinWalk直接從芯片中提取固件。
圖4.使用BinWalk提取的路由器固件
請(qǐng)注意,在提取期間,有一個(gè)RSA私鑰存儲(chǔ)在內(nèi)存中。訪問(wèn)Web服務(wù)時(shí),此密鑰用于加密和解密用戶(hù)密碼。
解壓縮固件后,我們發(fā)現(xiàn)登錄數(shù)據(jù)存儲(chǔ)在rootfs / etc文件夾中。默認(rèn)的用戶(hù)名和密碼非常弱。保留默認(rèn)組合可以允許訪問(wèn)FTP服務(wù)器并授予控制臺(tái)訪問(wèn)權(quán)限。如此弱的密碼有很多訪問(wèn)權(quán)限,幾乎任何人都可以猜到,而且不幸的是,它也是傳播諸如Mirai之類(lèi)的僵尸網(wǎng)絡(luò)惡意軟件的自動(dòng)攻擊的源頭。
圖5.對(duì)路由器的root訪問(wèn)
通過(guò)root級(jí)訪問(wèn),我們現(xiàn)在可以獲得對(duì)二進(jìn)制文件的一些控制。我們也有TFTP,所以我們下載了MIPS gdbServer,這是一個(gè)用于類(lèi)Unix系統(tǒng)的控制程序,允許操作員從另一個(gè)系統(tǒng)遠(yuǎn)程調(diào)試其他程序。這樣,調(diào)試器不需要駐留在同一設(shè)備上,只需要我們要調(diào)試的可執(zhí)行文件駐留在目標(biāo)系統(tǒng)上即可。
我們將此工具與IDA(一種多處理器反匯編器和調(diào)試器)結(jié)合使用,以進(jìn)行靜態(tài)和動(dòng)態(tài)分析,因此我們可以找到路由器漏洞的來(lái)源,并通過(guò)此過(guò)程來(lái)說(shuō)明如何在找到該漏洞并觸發(fā)它。
下圖顯示了在IDA上查看的已解析HTTP標(biāo)頭的相關(guān)部分:
圖6.已解析的HTTP標(biāo)頭顯示了引用程序的設(shè)置
請(qǐng)注意,此處使用函數(shù)strncmp來(lái)驗(yàn)證帶有字符串tplinkwifi.net的Referrer標(biāo)頭。前面還驗(yàn)證了IP地址,附加調(diào)試器可以查看這些詳細(xì)信息,確認(rèn)這確實(shí)是一個(gè)可利用的路由器漏洞。
攻擊請(qǐng)求
我們的下一步是檢查當(dāng)我們使用不同的字符串長(zhǎng)度發(fā)送易受攻擊的請(qǐng)求時(shí),密碼文件會(huì)如何處理。首先,我們嘗試發(fā)送一個(gè)較短的字符串,只有幾個(gè)字節(jié)。
圖7.使用較短的密碼字符串發(fā)送HTTP GET請(qǐng)求
該短字符串通過(guò)并損壞了密碼文件,結(jié)果是用戶(hù)將無(wú)法登錄,攻擊者也將無(wú)法登錄。此漏洞影響Telnet,F(xiàn)TP和Web服務(wù)。
圖8.被用戶(hù)提交的短字節(jié)字符串損壞的密碼文件
接下來(lái),我們嘗試發(fā)送長(zhǎng)度超過(guò)允許字符數(shù)的密碼。
發(fā)送一個(gè)很長(zhǎng)的密碼
這次,密碼完全無(wú)效,并且該值現(xiàn)在為空。從現(xiàn)在開(kāi)始,只使用“admin”作為用戶(hù)名,即可訪問(wèn)TELNET和FTP,而無(wú)需輸入任何密碼,默認(rèn)情況下,該用戶(hù)名是設(shè)備上唯一可用的用戶(hù)。
圖9.管理員密碼已失效
其他漏洞
在無(wú)需真正身份驗(yàn)證即可獲得管理員訪問(wèn)權(quán)限后,我們發(fā)現(xiàn)該特定設(shè)備還允許在WAN上配置FTP。此外,我們可以通過(guò)安全的HTTPS連接遠(yuǎn)程管理路由器,這也容易受到CGI攻擊。如果被惡意第三方利用,此路由器漏洞的影響和影響可能是有害的。
攻擊者不僅可以獲得特權(quán)訪問(wèn),而且合法用戶(hù)也可以被鎖定,并且不再能夠通過(guò)用戶(hù)界面登錄Web服務(wù),因?yàn)樵擁?yè)面將不再接受任何密碼(用戶(hù)不知道)。在這種情況下,受害者可能無(wú)法訪問(wèn)控制臺(tái),甚至無(wú)法訪問(wèn)shell程序,從而無(wú)法重新建立新密碼。即使有辦法設(shè)置新密碼,下一個(gè)易受攻擊的LAN/WAN/CGI請(qǐng)求也將再次使密碼無(wú)效。因此,唯一的訪問(wèn)將是通過(guò)USB端口連接的FTP文件。
潛在影響的另一個(gè)方面是RSA加密密鑰可能會(huì)失敗,因?yàn)樗皇窃O(shè)計(jì)用于空密碼值的。
最重要的是,受害者的設(shè)備FTP(如果配置為在WAN上使用)和Telnet(僅LAN)可以完全暴露給攻擊者。
易受攻擊的路由器比比皆是:如何保護(hù)你的數(shù)據(jù)
最近在TP-Link路由器上的這一關(guān)鍵漏洞只是物聯(lián)網(wǎng)(IoT)安全領(lǐng)域的冰山一角。如今,幾乎每個(gè)家庭都使用路由器,但根據(jù)美國(guó)消費(fèi)者協(xié)會(huì)(American Consumer Institute)的一項(xiàng)研究,六分之五的路由器因安全漏洞沒(méi)有得到充分更新。當(dāng)這些漏洞出現(xiàn)時(shí),數(shù)百萬(wàn)家庭和企業(yè)用戶(hù)將面臨數(shù)據(jù)泄露的風(fēng)險(xiǎn)。不僅僅是文本信息會(huì)丟失,想想網(wǎng)絡(luò)攝像頭、嬰兒監(jiān)視器和其他家用連接設(shè)備使用同一路由器連接互聯(lián)網(wǎng)的畫(huà)面。
為了緩解這些風(fēng)險(xiǎn),用戶(hù)必須更加重視路由器的安全性,并且要做的第一件事就是更改默認(rèn)密碼。 如果設(shè)備不允許修改用戶(hù)名和密碼,那么這無(wú)疑是查看更多漏洞的可靠方法。使用默認(rèn)設(shè)備的企業(yè)應(yīng)采取緩解措施,并在可能的情況下對(duì)此類(lèi)設(shè)備訪問(wèn)啟用雙因素身份驗(yàn)證(2FA)。