【安全漏洞】简要分析复现了最近的ProxyShell利用链
前言
近日,有研究員公布了自己針對微軟的Exchange服務(wù)的攻擊鏈的3種利用方式。微軟官方雖然出了補(bǔ)丁,但是出于種種原因還是有較多用戶不予理會,導(dǎo)致現(xiàn)在仍然有許多有漏洞的服務(wù)暴露在公網(wǎng)中,本文主要在原理上簡要分析復(fù)現(xiàn)了最近的ProxyShell利用鏈。
1.ProxyLogon: The most well-known pre-auth RCE chain
2.ProxyOracle: A plaintext-password recovery attacking chain
3.ProxyShell: The pre-auth RCE chain we demonstrated at Pwn2Own 2021
漏洞復(fù)現(xiàn)及分析
復(fù)現(xiàn)環(huán)境:
· Exchange Server 2016 Builder 15.1.1531
受影響版本:
· Exchange Server 2013 Versions < Builder 15.0.1497.012
· Exchange Server 2016 CU18 < Builder 15.1.2106.013
· Exchange Server 2016 CU19 < Builder 15.1.2176.009
· Exchange Server 2019 CU7 < Builder 15.2.0721.013
利用鏈大致分兩個階段,ACL繞過和在繞過前提下的wsdl的SOAP接口利用,最終能導(dǎo)致RCE,利用效果圖如下:
1.ACL繞過
在ProxyLogon就存在SSRF,而ProxyShell的SSRF利用點稍有不同,但是利用原理還是一致的,在Exchange 端掛調(diào)試下斷點,調(diào)試dll代碼如下,可知URL前后解析方式如下:
解析前URL
解析后URL
從結(jié)果看443端口轉(zhuǎn)向 444端口,那么現(xiàn)在再去看在服務(wù)端Exchange的web站點分布情況,頁面是跑在IIS組件上的,故而看IIS上的站點分布,存在前臺服務(wù)和后臺服務(wù),即存在80到81、443到444的映射關(guān)系。
【安全資料】
前臺服務(wù)
后臺服務(wù)
現(xiàn)在看利用的本質(zhì)就是在前臺服務(wù)中存在校驗缺失,導(dǎo)致外面發(fā)起的請求可以以前臺服務(wù)的進(jìn)程作為跳板進(jìn)行后臺服務(wù)資源的訪問。
從代碼上看
Microsoft.Exchange.FrontEndHttpProxy.dll【安全資料】
偽代碼如下
2.接口利用
Exchange的安裝目錄如下,可見軟件自身就設(shè)計了有較多的接口用于業(yè)務(wù)需求,攻擊方式正是基于如上解析方式進(jìn)行ACL權(quán)限繞過,訪問銘感資源(想起幾年前的某酒店因為wsdl接口外露,被人發(fā)現(xiàn)可直接寫文件的接口直接RCE的情況),對于接口的利用在于wsdl的SOAP XML請求的參數(shù)要求及報文格式,利用得當(dāng)?shù)那闆r下,可在未授權(quán)情況下獲取配置信息(LegacyDN、SID、郵箱賬戶)、讀寫文件、命令交互等。
接口利用截圖
以獲取LegacyDN信息為例
向/autodiscover/autodiscover.json?a=foo@foo.com/autodiscover/autodiscover.xml發(fā)送如下xml請求可返回LegacyDN內(nèi)容
而里面所需的EMailAddress參數(shù)如果未知,可使用官方包含的默認(rèn)特殊系統(tǒng)郵箱。
xml格式官方文檔連接如下
https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-get-user-settings-from-exchange-by-using-autodiscover【安全資料】
其他接口對應(yīng)的請求測試如下所示
獲取SID
獲取郵箱
寫入文件
實現(xiàn)寫入文件的思路大致為調(diào)用郵件接口發(fā)送郵件,在調(diào)用導(dǎo)出郵件接口,向指定系統(tǒng)路徑(iis根目錄)寫入webshell。由于郵件內(nèi)容為PST格式,IIS解析不了,需要二次解碼,即發(fā)送之前先編碼一次,導(dǎo)出的時候在解碼成正常格式即可,【安全資料】
編碼方式官方文檔鏈接如下(https://docs.microsoft.com/en-us/openspecs/office_file_formats/ms-pst/5faf4800-645d-49d1-9457-2ac40eb467bd)。
在寫入文件的時候還需要構(gòu)造cookie才能進(jìn)行調(diào)用訪問,如果沒有cookie會返回401,所幸構(gòu)造的所需要的內(nèi)容可以通過SSRF獲取,然后在分析調(diào)試代碼在手工構(gòu)造,發(fā)送郵件然后導(dǎo)出郵件。【安全資料】
調(diào)試代碼如下:
Microsoft.Exchange.Configuration.RemotePowershellBackendCmdletProxyModule.dll
序列化解密X-Rps-CAT數(shù)值的代碼如下
【安全資料】
修復(fù)原理
修復(fù)前
修復(fù)后
可以明顯看出刪除了IsAutodiscoverV2Request判斷防止SSRF的發(fā)生。
【安全資料】
總結(jié)
SSRF漏洞看似危害不大,但是只要后續(xù)攻擊鏈夠完整,一樣能發(fā)揮關(guān)鍵作用,就像這次的繞過加利用,又或是之前看過SSRF到內(nèi)網(wǎng)漫游的利用。從流量防御的角度來看(畢竟官方的補(bǔ)丁也不是那么及時),找準(zhǔn)利用的入口點(autodiscover.json)以及其他能造成危害的接口(/ews、/ecp、/autodiscover、/powershell等等)設(shè)置相應(yīng)的防御手段即可。從漏洞挖掘的角度來看,動態(tài)調(diào)試永遠(yuǎn)是清晰體現(xiàn)流量的生命周期的一個不錯的方式。
有在學(xué)網(wǎng)絡(luò)安全的朋友可以關(guān)注私信我哦!!!
總結(jié)
以上是生活随笔為你收集整理的【安全漏洞】简要分析复现了最近的ProxyShell利用链的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【安全漏洞】ProxyShell利用分析
- 下一篇: 【网络安全】身份验证凭证为何如此重要?