<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    CVE-2021-42321-天府杯Exchange 反序列化漏洞分析

    VSole2021-11-24 22:51:57

    漏洞信息

    今年天府杯爆出了一個新的Exchange 遠程命令執行漏洞,最近網上相關細節被披露,在此基礎上本文對該漏洞進行了詳細分析和復現。

    • 漏洞編號:CVE-2021-42321
    • 漏洞類型:遠程命令執行
    • 前提條件:郵箱賬號認證

    經過分析,發現該漏洞是一個反序列化漏洞,適用版本范圍如下:

    • Exchange 2019 CU10, 11
    • Exchange 2016 CU21, 22

    環境搭建

    安裝Exchange2016 CU21。

    添加域用戶,并在Exchange管理中心添加普通用戶。

    補丁對比

    根據官方文檔下載補丁更新文件,下載后補丁文件為`Exchange2016-KB5007409-x64-en.msp`。


    使用Uniextract軟件提取補丁文件,改動文件有1083個,其中dll文件有800多個。

    接下來使用dnspy反編譯dll文件,和CU21進行對比。

    補丁中代碼的修改量是非常大的,經過長時間分析,定位到`Microsoft.Exchange.Compliance`下`TypedBinaryFormatter`代碼被刪除。

    查看`TypedBinaryFormatter`發現調用DeserializeObject函數時并未使用binder參數,存在安全問題。`SerializatinBinder`是一個抽象類,用于控制反序列化的類型,防止安全問題發生。

    對`TypedBinaryFormatter`進行測試,可以觸發命令執行:

    調用鏈分析

    接下來需要定位反序列化函數的調用點。使用Dnspy分析功能可以快速分析函數和類的引用關系,發現`ClientExtensionCollectionFormatter.Deserialize`調用了`TypedBinaryFormatter.Deserialize`。

    `ClientExtensionCollectionFormatter`類是`IClientExtensionCollectionFormatter`的接口實現,在`OrgExtensionSerializer.TryDeserialize()`被調用。

    而`TryDeserialize`讀取`userConfiguration`配置并反序列化。

    使用`UserConfiguration`等關鍵字查閱官方文檔,`CreateUserConfiguration`接口可遠程設置用戶選項,但文檔中并沒有反序列化類型數據(BinaryData)的設置方法。

    使用Dnspy搜索`CreateUserConfiguration`方法,找到如下調用關系。`SetStream`函數解析數據的對象格式為`ServiceUserConfiguration`。

    CreateUserConfiguration.Execute()UserConfigurationCommandBase.SetProperties()UserConfigurationCommandBase.SetStream()
    

    查看`SeviceUserConfiguration`定義,它同時包含`DictionaryEntry`和`BinaryData`字段。

    那么如果要插入BinaryData數據,只需在數據中``同級目錄添加``即可。經測試需使用`FolderID`替換`DistinguishedFolderId`,否則添加數據失敗。FolderId可以通過`GetFolder`接口獲取。

    觸發反序列化

    通過公開文檔查閱,找到了`GetClientAccessToken`接口可以觸發`OrgExtensionSerializer.TryDeserialize`:

    分析一下調用過程。在`GetClientAccessToken.PrepareForExtensionRelatedTokens`中調用`GetUserExtensionDataList`和`GetUserExtensionDataListWithoutUpdatingCache`。

    隨后在`GetExtensibilityContext`中執行`GetExtensions`。

    接下來進入`InstalledExtensionTable`,在`GetOrgExtensionDataGetter`函數中調用`OrgExtensionTable.GetOrgExtensions`。

    繼續調用`GetAllOrgExtensionData`方法。

    在`OrgExtensionDataGetter`中執行`Retrieve`。

    `CachedOrgExtensionRetriever`為`IOrgExtensionRetriever`接口的一個實現,其`Retrieve`函數調用`TryDeserializeExtensionFromCache`。

    最終執行`TryDeserialize`進行反序列化。

    結合插入的反序列化數據可執行命令。

    這里附上一個調試堆棧截圖。

    序列化exchange
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    【最新漏洞預警】CVE-2021-42321-天府杯Exchange序列化漏洞分析
    昨日,微軟官方發布了MicrosoftExchange Server的多個漏洞更新,攻擊者可以利用相關漏洞在無需用戶交互的情況下攻擊指定Exchange服務器,執行任意代碼。CVE-2021-26857: Exchange序列化漏洞,該漏洞需要管理員權限,利用此漏洞的攻擊者可以在Exchange服務器上以SYSTEM身份運行代碼。攻擊者通過Exchange服務器進行身份驗證后,可以利用此漏洞將文件寫入服務器上的任何路徑。
    風險通告 近日,奇安信CERT監測到微軟修復了Microsoft Exchange多個高危漏洞。通過組合利用這些漏洞能夠在未經身份驗證的情況下遠程獲取目標服務器權限。其中包括CVE-2021-26855:服務端請求偽造漏洞;CVE-2021-2685...
    MS14-068(CVE-2014-6324) Kerberos 校驗和漏洞 https://nvd.nist.gov/vuln/detail/CVE-2014-6324 EXP/POC: https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068 CVE-2020-1472 Netlogon 特權提升漏洞 http
    域滲透歷史漏洞匯總
    2022-04-14 06:58:32
    MS14-068(CVE-2014-6324) Kerberos 校驗和漏洞 https://nvd.nist.gov/vuln/detail/CVE-2014-6324 EXP/POC: https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068
    Microsoft Exchange是全球最常用的Email服務器之一,主要用于對企業網絡中的Email通信進行集中管理。它在互聯網上普遍性和可訪問性使其成為攻擊者的首選目標之一。
    閱讀Microsoft發布的公告。跟蹤為CVE-2021-26857的第二個漏洞是駐留在統一消息服務中的不安全的反序列化漏洞。跟蹤為CVE-2021-27065的最后一個漏洞是Exchange中的身份驗證后任意文件寫入漏洞。根據Microsoft的說法,PT APT在針對美國組織的針對性攻擊中利用了這些漏洞。該組織在歷史上發起了針對多個行業的美國組織的網絡間諜活動,其中包括律師事務所和傳染病研究人員。
    使用 SerializationBinder 無法完全修復反序列化漏洞隱患。經過深入研究總結了兩種不安全 SerializationBinder 限定的繞過方式,下面分享給大家。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类