漏洞概述
AWS VPN應用程序存以 SYSTEM 身份寫入任意文件,這可能導致提權和信息泄露漏洞。該漏洞可能導致用戶的 Net-NTLMv2 哈希被VPN 配置文件中的 UNC 路徑泄露。這些漏洞已確認影響版本 2.0.0,并已在版本 3.0.0 中修復。
要修復漏洞,請升級到可在此處下載的3.0.0 版本。
受影響的產(chǎn)品
供應商:Amazon Web Service (AWS)
產(chǎn)品:AWS VPN Client (Windows)
確認漏洞版本:2.0.0
固定版本:3.0.0
CVE-2022-25166:任意文件寫入
在 Amazon AWS VPN Client 2.0.0 中發(fā)現(xiàn)了一個問題。在驗證 VPN 配置文件期間存在 TOCTOU 競爭條件。這允許在 AWS VPN Client 服務(作為 SYSTEM 運行)處理文件之前將 AWS VPN Client 允許參數(shù)列表之外的參數(shù)注入到配置文件中。低級用戶(例如 log)可以注入危險的參數(shù),這將導致可在日志文件中寫入任意內容。
CVE-2022-25165:UNC 路徑導致信息泄露
在為指令(如 "auth-user-pass")引用文件路徑時,可以在OpenVPN配置文件中包含一個UNC路徑。當此文件被導入 AWS VPN 客戶端并且客戶端嘗試驗證文件路徑時,它會在路徑上執(zhí)行打開操作并將用戶的 Net-NTLMv2 哈希泄漏給外部服務器。
AWS VPN客戶端介紹
AWS VPN Client 是一個桌面應用程序,可用于連接到 AWS Client VPN。
官網(wǎng)網(wǎng)站介紹為:
AWS Client VPN 的客戶端是免費的。您可以將您的計算機直接連接到 AWS Client VPN 以獲得端到端的 VPN 體驗。該軟件客戶端與 AWS Client VPN 的所有功能兼容。
復現(xiàn):任意文件寫入漏洞
AWS VPN 客戶端安裝一個 Windows 服務,以管理員身份運行,充當自定義 OpenVPN 客戶端可執(zhí)行文件的包裝器。低權限用戶可以使用 AWS VPN 客戶端嘗試使用導入的 OpenVPN 配置文件連接到 VPN。
有一些已知的危險 OpenVPN 指令會在 VPN 連接期間執(zhí)行,例如:運行命令或將日志文件寫入特定目錄等操作。AWS VPN 客戶端嘗試禁止在配置文件中使用的 OpenVPN 指令的操作,但是限制不全,導致可以在執(zhí)行 OpenVPN 可執(zhí)行文件之前執(zhí)行的。這使得在配置文件被檢查后,OpenVPN可執(zhí)行文件可通過條件競爭來執(zhí)行,在文件中注入不允許的指令。
您可以在下面看到由 AWS VPN 服務生成的日志文件,其中顯示了從成功驗證配置到執(zhí)行 OpenVPN 客戶端之間的時間。
接著可以很容易使用Powershell腳本監(jiān)控日志文件,并在成功驗證配置文件后,在OpenVPN可執(zhí)行文件處理之前立即將惡意指令寫入配置文件。
此時便可以寫入不允許執(zhí)行指令,就像在配置文件中正常添加一條允許指令這么簡單,此時便可以輕易的進行權限提升了。注意:AWS VPN 服務使用“–script-security 1”標志啟動 OpenVPN 可執(zhí)行文件,這會阻止執(zhí)行外部二進制文件或腳本。
盡管我們不能直接運行命令,但仍然可以使用“l(fā)og”指令將日志輸出重定向到我們選擇的任何路徑或文件。由于執(zhí)行是以SYSTEM用戶的身份進行的,這就給了我們一個寫文件的特權。在最簡單的情況下,這可以用來寫一個批處理腳本到一個管理員的根目錄。
CVE-2022-25166 相關腳本可以查看我的github
復現(xiàn):UNC路徑導致信息泄露
AWS VPN客戶端對作為VPN配置文件導入客戶端的配置文件進行驗證的過程中,其中一個驗證步驟是當任何文件路徑被提供給接受文件路徑作為參數(shù)的指令時,檢查文件路徑是否存在。
接受文件路徑的有效指令的一些示例是:
auth-user-pass
AWS VPN Client 的驗證是通過對路徑執(zhí)行文件打開操作以確保其存在來完成的。
AWSVPNClient.Core.dll 包含 OvpnConfigParser.cs,它主要用“CheckFilePath”方法來檢查文件路徑是否有效。如上圖代碼中可發(fā)現(xiàn):函數(shù)中調用了File.Open()。
重點來了!
此時我們可以通過提供一個包含 UNC 路徑作為文件路徑的文件來利用。當文件在導入前經(jīng)過驗證時,它將打開 UNC 路徑并將用戶的 Net-NTLMv2 哈希發(fā)送到外部服務器。
CVE-2022-25166 相關腳本可以查看我的github