中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

發布時間:2021-12-27 18:21:04 來源:億速云 閱讀:175 作者:柒染 欄目:安全技術

這期內容當中小編將會給大家帶來有關Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

一 前言

Microsoft公告中披露了一則關于Exchange Server的任意用戶偽造漏洞,天融信阿爾法實驗室對此漏洞進行了復現及分析。漏洞復現是在exchange server 2010 SP2中進行的,復現過程中,發現原作者給出獲取用戶SID的方法,在2010版本中并沒有相關操作選項,所以作者給出的POC也就無法使用。不過后來在Github中找到一個POC。在該POC中,使用了一種反向委托的方法來獲取用戶SID,并利用這個POC成功復現了漏洞。

二 背景介紹

Microsoft ExchangeServer 是個消息與協作系統。Exchange Server可以被用來構架應用于企業、學校的郵件系統或免費郵件系統。它還是一個協作平臺。你可以在此基礎上開發工作流,知識管理系統,Web系統或者是其他消息系統,是一個全面的Internet協作應用服務器,適合有各種協作需求的用戶使用。

2.1 漏洞描述

在MicrosoftExchange Server中存在一個特權提升漏洞,該漏洞允許任何經過身份驗證的用戶冒充ExchangeServer上的其他任意用戶。漏洞產生的原因是由于在Exchange Server中使用NTLM身份驗證時存在特定缺陷,服務器產生的NTLM響應可以反射回攻擊者服務器,導致攻擊者可以驗證任意的EWS(Exchange Web服務)請求。

2.2 受影響的系統版本

Exchange Server 2010

Exchange Server 2013

Exchange Server 2016

2.3 漏洞編號

CVE-2018-8581

三、測試環境

Windows 2008 R2

Exchange Server 2010 SP2

四、漏洞復現

首先進行腳本參數配置。


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

在填好相關參數時,運行腳本。

Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

然后再打開web界面執行相關操作。


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

輸入目標(Administrator)郵箱后確定。


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

最終就成功代理了目標(Administrator)郵箱。

在代理成功后,可以接收目標郵箱的郵件收取,也可以對其郵件進行查看、刪除等操作。

現在用mailtest2用戶向目標(Administrator)郵箱發送一封郵件。


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

可以看到,代理用戶成功接收到了由mailtest2用戶向目標(Administrator)郵箱新發來的郵件。

如果想移除委托關系,可以將腳本中的FLAG改為0后運行。


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

Remove后再查看委托用戶的郵箱。


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

五 漏洞利用流程及原理分析

    為了能夠讓大家在分析漏洞時能夠更加流暢,這里先介紹幾個概念。

1、什么是SID?

SID全稱為:Security Identifiers,是微軟從Server2000時代引入的一個概念:安全標識符。在MicrosoftOS系統中(Server2000以上級別)工作組環境下:計算機、組、用戶都會有自己的SID號,這些信息是存儲在用戶計算機本地注冊表中的。這些SID號是根據其對象類型的不同隨機生成的,具有一定的命名規則。簡單來說,SID其實就是對象身份的象征。

2、什么是EWS?

EWS是微軟實現的一種客戶端和服務器之間的交換信息的協議。Exchange Server提供了包括從電子郵件、會議安排、團體日程管理、任務管理、文檔管理、實時會議和工作流等豐富的協作應用。

2、NTLM認證概念、NTLM認證流程以及NTLM認證消息結構。

3.1什么是NTLM認證?

NTLM認證簡單來說就是一種在不直接提供密碼的情況下,客戶端間接向服務器證明知道用戶的密碼,從而達到認證目的的一種方法。

3.2 NTLM認證流程


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

3.2.1 客戶端如果試圖訪問服務器資源,首先會向服務器發送協商消息。在發送的請求中會包含一個以明文表示的用戶名。

3.2.2 服務器接收到請求后會生成一個16byte的隨機數,并返回給客戶端。這個隨機數被稱為Challenge或者Nonce。

3.2.3 客戶端在接收到服務器返回的Challenge后,會使用當前登錄用戶的密碼哈希值對其加密,生成Authenticate認證消息,然后將Authenticate發送給服務器。

3.2.4 服務器接收到客戶端發送回來的Authenticate后,會向DC(Domain)發送針對客戶端的驗證請求。該請求主要包含以下三方面的內容:客戶端用戶名,客戶端Authenticate和原始的Challenge。

3.2.5 DC根據用戶名獲取該帳號的密碼哈希值,對原始的Challenge進行加密。如果加密后的Challenge和服務器發送的一致,則意味著用戶擁有正確的密碼,驗證通過,否則驗證失敗。DC將驗證結果發給服務器,并最終反饋給客戶端。

3.3 NTLM 認證消息的結構

Negotiate協商消息、Challenge挑戰消息和Authenticate認證消息,他們的結構很相似:NTLMSSPXXXXXXXXXX。其中NTLMSSP表示是NTLM驗證的請求。但是在實際中,NTLMSSPXXXXXXXXXX是經過base64編碼的。

舉個例子:


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

概念介紹完,接下來開始分析漏洞利用流程及原理,通過POC來看,漏洞利用執行過程可分為四大步驟。


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

圖一:總流程圖

第一步:獲取用戶SID

獲取用戶SID的目的是為了后續構造SOAP頭來冒充用戶。


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

<t:EmailAddress>是攻擊者郵箱地址,這里可以理解成委托方。

<t:PrimarySmtpAddress>是受害者郵箱地址,可以理解成被委托方。

該腳本是通過反向委托的方式來獲取目標郵箱用戶SID。通過向服務器發送一個將CONTROLLED_EMAIL 委托給 TARGET_MAIL的請求包,服務器就會返回TARGET_MAIL用戶SID。


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

上圖是代碼執行流程,看代碼可以發現,這部分有多次add和remove委托的行為。之所以這樣重復請求,是為了防止發生意外錯誤。

上面說到Exchange Server添加委托操作的時候,服務器會返回被委托方(Target)的SID,但是當添加委托時,返回的數據包中如果包含ErrorDelegateAlreadyExists字符時,說明已經存在委托行為。

Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的這時就需要先remove掉委托關系,然后再add,這樣才能獲取到用戶SID。

第二步:請求推送訂閱

Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

推送訂閱目的是將NTLM響應返回給攻擊者服務器。

這部分是漏洞點所在,包括兩個漏洞--SSRF和NTLM身份驗證缺陷。

SSRF漏洞:攻擊者可以使用一個已認證的郵箱賬號發EWS發送推送訂閱請求。(圖中/EWS/Exchange.asmx是EWS請求的地址)。推送訂閱時,Exchange允許用戶自己指定URL,所以攻擊者可以將這一URL改為自己的服務器地址。上圖的EVIL_HTTPSERVER_URL就是攻擊者自己的服務器。當這個推送訂閱請求包發送到服務器時,服務器就會向攻擊者指定的URL發送請求。

Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

其中<t:URL>是SSRF的核心,跟蹤一下服務器處理流程。

根據請求的Exchange.asmx文件以及請求內容,找一下Exchange Server的處理函數。


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

可以看到該類其中有一個關鍵的數據成員Url,下面跟蹤一下該成員函數,看看哪里使用了該成員函數。


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

可以看到該Url被保存到PushSubScription的clientUrl中了。

跟蹤發現該變量僅有三處使用。


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

主要的一處便是通過Http協議進行Notification消息發送的過程。


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

NTLM身份驗證缺陷:在發送請求時,Exchange Server使用的是CredentialCache.DefaultCredentials進行連接:


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

并且CredentialCache.DefaultCredentials是以NT AUTHORITY\SYSTEM權限運行,這就會導致Exchange Server將服務器生成的NTLM響應發送到攻擊者的服務器。Exchange Server默認情況下還設置了以下注冊表項:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\DisableLoopbackCheck= 1


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

這就導致攻擊者可以使用返回NTLM響應進行HTTP身份驗證,從而可以驗證任意EWS請求。

第三步:構造攻擊數據包


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

由于CredentialCache.DefaultCredentials是以NT AUTHORITY\SYSTEM權限運行,所以攻擊者可以與TokenSerializationRight進行“特權”會話,然后利用SOAP頭部模擬任何想要偽裝的用戶。

使用一開始獲取到的用戶SID來構造SOAP頭冒充受害者用戶。

SOAP Body處構造的是委托請求的包,作用是目標郵箱的inbox收件箱將會委托于攻擊者,這樣就可以查看并修改目標郵箱的郵件。

第四步:NTLM認證及攻擊


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

這里攻擊者利用Python HTTPServer搭建一個簡單的web服務器來作為自己的服務器,這個服務器其實是起到一個代理(中轉)的作用。因為在NTLM認證證程中,它監聽并響應著Exchange Server訂閱功能發來的請求(請求中包含NTLM值),同時利用得到的NTLM響應值請求EWS,在這個過程中,它其實充當著就是一種像中間代理人一樣的身份。我們可以把這個攻擊者服務器稱作代理服務器。

下面以Wireshark通信流量包來詳細分析下NTLM的整個認證及攻擊流程,大家可對照總流程(圖一)的第四步驟來分析。

首先,攻擊者在推送訂閱后,Exchange Server的訂閱功能會向代理服務器發送POST請求。


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

然后代理服務器會返回一個包含WWW-Authenticate:NTLM的header頭并返回401狀態(未認證)。


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

Exchange Server收到后,就會發送一個Negotiate 協商消息開始NTLM驗證。


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

然后代理服務器會用這個Negotiate協商消息并帶上relay_body(攻擊包)去請求EWS。


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

接著,EWS就會返回Challenge挑戰消息,然后代理服務器會將這個Challenge挑戰消息響應回Exchange Server的訂閱功能。


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

Exchange Server的訂閱功能接收到后,就會對其加密,返回Authenticate認證消息給代理服務器。


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

然后,代理服務器返回了401狀態。其實這個返回什么并不重要,因為我們目的是獲取Authenticate認證消息。

最后代理服務器就會用這個獲取到的Authenticate認證消息并帶上relay_body(攻擊包)去請求EWS,從而成功驗證并完成攻擊。


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的


Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的

六 修復建議

手工修復:

刪除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\DisableLoopbackCheck鍵值

在管理員權限的命令行窗口中,輸入如下命令:

reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa/v DisableLoopbackCHECK /f

在刪除鍵值后,無需重新啟動操作系統,也無需重新啟動Exchange Server。

官方補丁:

Microsoft在2018年11月發布了補丁,但該補丁僅對該漏洞進行了緩解,并沒有進行嚴格意義上的修復。不過Microsoft發布的公告指出,在此后Exchange累計更新中,將不會再默認啟動這一注冊表項。

上述就是小編為大家分享的Microsoft Exchange任意用戶偽造漏洞CVE-2018-8581的分析是怎么樣的了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武山县| 榕江县| 富阳市| 浙江省| 饶平县| 平安县| 吴旗县| 漳浦县| 迁西县| 鹰潭市| 吉隆县| 青浦区| 中方县| 比如县| 麦盖提县| 界首市| 东兰县| 紫云| 安泽县| 宜章县| 安化县| 夹江县| 宜宾市| 龙川县| 吉首市| 新乡县| 万安县| 宁国市| 疏勒县| 临邑县| 金寨县| 昌吉市| 冕宁县| 西乌珠穆沁旗| 邛崃市| 青阳县| 额尔古纳市| 镇沅| 崇义县| 于田县| 大城县|