Windows遠程協助XXE漏洞發現之旅
一、介紹
Windows遠程協助允許您信任的人接管您的電腦並解決世界各地的問題。它依靠遠程桌面協議與需要的人建立安全連接。——MSDN
二、背景
我在研究過程中偶然發現了這個功能,並且很好奇能否以任何方式利用此功能。所以讓我們從開始MSRA(微軟遠程協助)開始。
它給出兩個選項:
·邀請別人幫助你
·響應別人的邀請
如果選擇了第一個選項,則將得到後續的另一組2個選項:
·將邀請保存到.msrcincident文件
·通過電子郵件發送邀請,.mrcincident文件作為附件
我們選擇在本地保存文件並分析其內容,顯然我們選擇了第一個選項。
打開Invitation.msrcincident文件可以顯示具有大量參數和值的XML數據。
口令加密流程如下所示。
然而,當看到XML數據被提供給程序時,都必須考慮XML外部實體(XXE)漏洞,過去這些漏洞導致了信息泄露甚至RCE。
所以首先我很好奇用於處理邀請文件的解析器MSRA。ProcessMonitor顯示如下:
它使用MSXML3來解析XML數據,因此我立即開始尋找潛在的與MSXML3相關的現有漏洞。MSXML3擁有許多漏洞,但是沒有發布任何關於這些漏洞的細節。那麼來看看MSXML3解析器是否允許使用SYSTEM實體。
三、漏洞
第一個問題是如果沒有顯示所請求資源的輸出,如何確認存在XXE漏洞。基本的XXE payload看起來像這樣:
]>&xxe;
然而,這個XML(解析後)的結果應該是標籤中的內容,應該顯示文件passwd的內容。
MSRA不會顯示處理過的XML的輸出,因此很難驗證。但為了能將這種攻擊武器化,需要將受害者請求的數據傳到我的機器上。因此,需要使用由研究人員Alexey Osipov和Timur Yunusov發現的稱為帶外數據檢索的技術,該技術允許構建帶有來自其他實體的數據的URL。
看起來像這樣:
利用相同的技術,用以下XML修改了Invitation.msrcincident文件:
%remote;%root;%oob;]>
在伺服器上,使用以下XML創建一個文件xxe.xml:
">
使用我們的XML XXE payload,打開修改後的Invitation.msrcincident文件,結果如下:
結果是C:Windowswin.ini的內容作為GET請求的一部分發送到伺服器。如果URL解碼發送至伺服器的GET值,得到如下結果:
for 16-bit app support[fonts][extensions][mci extensions][files]
[Mail]MAPI=1CMCDLLNAME32=mapi32.dllCMC=1MAPIX=1MAPIXVER=1.0.0.1OLEMessaging=1
我使用MSXML3解析器確認了影響MSRA的XXE漏洞。
四、結論
這種XXE漏洞可以用於大規模網路釣魚攻擊,針對的人認為他們確實在幫助另一個有IT問題的人,完全不知道.msrcincident文件可能會導致敏感信息丟失。攻擊者可針對包含用戶名/密碼的特定日誌/配置文件。GDSSecurity還通過暴力窮盡某些目錄,實現了自動化XXE工具。該工具可以在這裡找到。
※密碼竊取軟體AGENT TESLA的傳播渠道分析
※如何預防應用程序中的XSS漏洞
TAG:嘶吼RoarTalk |