search
CVE-2017-3085:Adobe Flash泄漏Windows用戶憑證

CVE-2017-3085:Adobe Flash泄漏Windows用戶憑證

早前我寫了一篇文章講述Flash沙盒逃逸漏洞最終導致Flash Player使用了十年之久的本地安全沙盒項目破產。從之前爆出的這個漏洞就可以看出輸入驗證的重要性,靠著Flash運行時混合UNC以及文件URI就足夠提取本地數據,之後獲取Windows用戶憑證傳輸給遠端SMB伺服器。

Flash Player 23開始使用local-with-filesystem沙盒,有效的解決了本地存在的這兩個問題。然而有趣的是在發行說明中卻忽略了local-with-networking以及remote這兩個沙盒,實在讓我懷疑官方是否有用心在修補漏洞。

事實上,最初的測試顯示Flash拒絕所有的UNC或者文件風格的路徑,就連沙盒似乎都不接受非HTTP URL。反過來思考這個問題,是不是我們只要先通過了輸入驗證就可以隨意修改輸入表達式了?

本文所述漏洞已向Adobe報告(APSB17-23),分配的CVE為CVE-2017-3085.

再次重申利用之前那個漏洞的關鍵,在於我們的惡意Flash應用能連接到SMB伺服器。不經過身份驗證直接讓服務端拒絕我們的訪問,之後服務端觸發漏洞獲得Windows用戶憑證。

Adobe似乎有意識到這種攻擊向量的存在。Flash之前的版本都可以從任意SMB服務端載入資源,23版本之後就開始拒絕所有的UNC及文件風格路徑(兩種用於引用SMB主機的方案),例如\10.0.0.1\some\file.txt以及file://///10.0.0.1/some/file.txt,兩者等效且被拒絕訪問。

不幸的是本想採用微軟的URI列表來構造生成我們想要的URL,然而最終的結果讓人不太滿意。沙盒及URLLoader都不接受前綴非HTTP或者HTTPS的路徑,似乎是Adobe通過切換到白名單方法來進行加強。

現在我們是否能在通過輸入驗證之後更改請求路徑?雖然HTTP的使用被限制了,但我們可以轉而利用HTTP的重定向去訪問SMB主機。

HTTP與SMB的這個組合雖然不常見,但並非不能組合。根據這個思路,我立馬聯想到知名的Redirect-to-SMB漏洞。通過設置HTTP的Location頭信息以及一個恰當的響應代碼(例如301,302),就可以利用該漏洞將HTTP請求重定向到一個惡意SMB伺服器

漏洞利用

在我們的攻擊場景中,惡意Flash應用以及SMB服務都運行在IP地址為23.100.122.2的機器上。該Flash應用運行在目標本地機器上的remote沙盒,也就是說運行時禁止本地文件系統訪問,但允許遠程連接。

追溯Win32 API發現受Redirect-to-SMB影響的函數駐留在urlmon.dll,因此使用該Flash的IE及其他第三方應用都是存在威脅的。

嘗試重定向到一個出站請求GET /somefile.txt:

Code #2032是Flash對Stream Error的代號,此外#2048可能表明成功,使用Wireshark看看到底發生了什麼:

我們的HTTP/1.1 302響應沒有觸發SMB通信,可是請注意這裡有一個對crossdomain.xml的GET請求,被稱為跨域策略文件,如果沒有明確允許domain-b.com,託管在domain-a.com的Flash應用運行時就不會從該域載入資源。

細心的讀者可能注意到Adobe的定義與HTTP CORS(參考RFC6454)不同,限制了其本身的跨域數據處理。具體來說它沒有去考慮其他不同的協議,因此該安全機制與我們的攻擊沒有任何交集:我們嘗試重定向到SMB,相同主機上的不同協議。

然而有趣的是,通過Wireshark獲取的信息表明:crossdomain.xml請求的地址與我們Flash應用的地址相同。採用Adobe開發指南中的語法構造一個限制最小的跨域策略:

<cross-domain-policy <site-controlpermitted-cross-domain-policies="all"/> <allow-access-fromdomain="*"secure="false"/> <allow-http-request-headers-fromdomain="*"headers="*"secure="false"/>cross-domain-policy

重新載入Flash應用,繼續觀察:

成功建立目標機器(23.100.122.3)與我們的遠程伺服器(23.100.122.2)之間的SMB連接。至此我們便可以重複之前的操作。使用一個Python腳本調用SMBTrap對惡意SMB伺服器進行操作,之後通過傳入的請求捕獲目標的用戶憑證:

總結

有趣的是與之前的漏洞相比較,這次Edge與Chrome(開啟Flash)都不受影響,似乎這兩個瀏覽器都對Flash連接SMB主機已經有了防護機制。Firefox及Internet Explorer受該漏洞影響,當前版本的Microsoft Office同樣適用。除此之外,該漏洞還影響到remote 和 local-with-networking兩個沙盒。

Flash Player 26.0.0.151已修復該漏洞,用戶可通過Windows Update以及Adobe官網進行下載更新。

附錄

受影響主機環境

Firefox Internet Explorer Microsoft Office 2010, 2013and2016

受影響平台

FlashPlayer 23.0.0.162to 26.0.0.137WindowsXP, Vista, 7, 8.xand 10

參考文獻

  • Adobe Security Bulletin APSB17-23

  • CVE-2017-3085

  • ZDI-17-634

  • Threatpost – Patched Flash Player Sandbox Escape Leaked Windows Credentials

  • SC Magazine UK – Recently patched Flash Player sandbox leaks Windows credentials

  • BleepingComputer – Recently Patched Flash Bug Can Leak Windows Credentials

  • Security.NL (Dutch) – Radboud-student ontdekt opnieuw lek in Adobe Flash Player

  • SecNews (Greek) – Flash Player μετά την ενημέρωση: ευπάθεια και πάλι

  • ComputerBild (German) – Adobe Patchday: Updates gegen über 80 Sicherheitslücken

  • SecurityWeek – Adobe Patches 69 Flaws in Flash, Reader, Acrobat

  • SecurityTracker – Adobe Flash Player Bugs Let Remote Users Obtain Potentially Sensitive Information and Execute Arbitrary Code

參考來源:bjornweb,freebuf小編鳶尾編譯,轉載請註明來自FreeBuf.com

熱門推薦

本文由 一點資訊 提供 原文連結

一點資訊
寫了5860317篇文章,獲得23246次喜歡
留言回覆
回覆
精彩推薦