Exchange CVE-2021-28480 分析复现
字数 2030 2025-08-27 12:33:37

Exchange CVE-2021-28480 漏洞分析与复现指南

漏洞概述

CVE-2021-28480 是 Microsoft Exchange Server 中的一个严重漏洞,于2021年4月14日由Microsoft发布安全更新修复。该漏洞与CVE-2021-26855类似,属于蠕虫级别的远程命令执行漏洞,CVSS评分为9.8。

漏洞背景

此漏洞是2021年4月Exchange安全更新中修复的四个高危漏洞之一(CVE-2021-28480、CVE-2021-28481、CVE-2021-28482、CVE-2021-28483)。该漏洞与BackendCookie处理机制相关,允许攻击者通过构造特定的Cookie实现SSRF(服务器端请求伪造)。

漏洞分析

补丁对比

补丁主要做了以下修改:

  1. 添加了对于FQDN(完全限定域名)的验证
  2. 修改了BackendCookie的处理逻辑

BackendCookie处理机制

当访问Exchange特定位置时,系统会生成BackendCookie,用于指定FQDN。这与CVE-2021-26855的利用方式相似。

BackendCookie由BackEndCookieEntryPaser.TryParse()方法处理,其处理流程如下:

  1. 通过UnObscurify方法进行解码
  2. 解码过程包含:
    • Base64解码
    • 异或解码(与255异或)

解码过程

Python解码实现:

def decode(str):
    s = base64.b64decode(str)
    array = list()
    for i in s:
        array.append(i ^ 255)
    print("".join(list(map(chr, array))))

解码后的格式示例:
Server~WIN-64V4EOC0M9F.test.com~1941997017~2022-03-30T03:19:43

其中:

  • 第一个参数为"Server"时,第二个参数会被作为FQDN传入
  • 可以修改FQDN部分(如WIN-64V4EOC0M9F.test.com)进行利用

可利用的请求处理器

并非所有链接都能利用此Cookie,需要找到BEServerCookieProxyRequestHandler类的继承者:

  • AnonymousCalendarProxyRequestHandler
  • ComplianceServiceProxyRequestHandler
  • EwsAutodiscoverProxyRequestHandler
  • MailboxDeliveryProxyRequestHandler
  • MapiProxyRequestHandler
  • MicroServiceProxyRequestHandler
  • MrsProxyRequestHandler
  • OabProxyRequestHandler

其中,AnonymousCalendarProxyRequestHandler是推荐的模拟目标。

编码过程

Python编码实现:

def encode():
    bytes = list(map(ord, "Server~WIN-64V4EOC0M9F.test.com/mapi/nspi?~1941997017~2022-04-21T07:36:07"))
    array = list()
    for i in bytes:
        array.append(i ^ 255)
    print(base64.b64encode(bytearray(array)).decode())

补丁限制

在CVE-2021-26855补丁后,微软添加了额外的防护代码:

  • 对比FQDN和Host验证是否为SSRF
  • 打了补丁的环境会显示"Service Unavailable"

因此,复现需要在未打2021年3月补丁的Exchange环境中进行。

漏洞复现

环境准备

  1. 使用未打2021年3月补丁的Exchange Server
  2. 确保网络位置设置为"Home network"或"Work network",不能是"Public network"
  3. 确保管理员用户设置了密码
  4. 开启WinRM服务:winrm quickconfig
  5. 修改allowunencrypted属性:
    cd WSMan:\localhost\Client
    set-item .\allowunencrypted $true
    dir
    
  6. 设置TrustedHosts:
    Get-Item WSMan:\localhost\Client\TrustedHosts
    Set-Item WSMan:\localhost\Client\TrustedHosts -Value '*'
    

利用步骤

  1. 构造恶意的BackendCookie
  2. 通过AnonymousCalendarProxyRequestHandler发送请求
  3. 实现SSRF攻击
  4. 参照CVE-2021-34473的利用方式:
    • 获取SID并生成token
    • 访问Exchange PowerShell执行命令
  5. 可选:搭建Flask代理到本地执行命令

参考代码

可利用的PoC代码参考:
https://gist.githubusercontent.com/zdi-team/087026b241df18102db699fe4a3d9282/raw/ab4e1ecb6e0234c2e319bc229c71f2f4f70b55d9/P2O-Vancouver-2021-ProxyShell-snippet-7.py

防护建议

  1. 及时安装Microsoft发布的安全更新
  2. 限制Exchange Server的网络访问
  3. 监控异常的身份验证请求
  4. 实施网络分段,减少攻击面

总结

CVE-2021-28480是一个严重的Exchange Server漏洞,允许攻击者通过构造特定的BackendCookie实现SSRF攻击,进而可能导致远程代码执行。该漏洞与CVE-2021-26855有相似之处,但需要不同的利用路径。管理员应及时应用安全更新,并采取适当的防护措施。

Exchange CVE-2021-28480 漏洞分析与复现指南 漏洞概述 CVE-2021-28480 是 Microsoft Exchange Server 中的一个严重漏洞,于2021年4月14日由Microsoft发布安全更新修复。该漏洞与CVE-2021-26855类似,属于蠕虫级别的远程命令执行漏洞,CVSS评分为9.8。 漏洞背景 此漏洞是2021年4月Exchange安全更新中修复的四个高危漏洞之一(CVE-2021-28480、CVE-2021-28481、CVE-2021-28482、CVE-2021-28483)。该漏洞与BackendCookie处理机制相关,允许攻击者通过构造特定的Cookie实现SSRF(服务器端请求伪造)。 漏洞分析 补丁对比 补丁主要做了以下修改: 添加了对于FQDN(完全限定域名)的验证 修改了BackendCookie的处理逻辑 BackendCookie处理机制 当访问Exchange特定位置时,系统会生成BackendCookie,用于指定FQDN。这与CVE-2021-26855的利用方式相似。 BackendCookie由 BackEndCookieEntryPaser.TryParse() 方法处理,其处理流程如下: 通过 UnObscurify 方法进行解码 解码过程包含: Base64解码 异或解码(与255异或) 解码过程 Python解码实现: 解码后的格式示例: Server~WIN-64V4EOC0M9F.test.com~1941997017~2022-03-30T03:19:43 其中: 第一个参数为"Server"时,第二个参数会被作为FQDN传入 可以修改FQDN部分(如 WIN-64V4EOC0M9F.test.com )进行利用 可利用的请求处理器 并非所有链接都能利用此Cookie,需要找到 BEServerCookieProxyRequestHandler 类的继承者: AnonymousCalendarProxyRequestHandler ComplianceServiceProxyRequestHandler EwsAutodiscoverProxyRequestHandler MailboxDeliveryProxyRequestHandler MapiProxyRequestHandler MicroServiceProxyRequestHandler MrsProxyRequestHandler OabProxyRequestHandler 其中, AnonymousCalendarProxyRequestHandler 是推荐的模拟目标。 编码过程 Python编码实现: 补丁限制 在CVE-2021-26855补丁后,微软添加了额外的防护代码: 对比FQDN和Host验证是否为SSRF 打了补丁的环境会显示"Service Unavailable" 因此,复现需要在未打2021年3月补丁的Exchange环境中进行。 漏洞复现 环境准备 使用未打2021年3月补丁的Exchange Server 确保网络位置设置为"Home network"或"Work network",不能是"Public network" 确保管理员用户设置了密码 开启WinRM服务: winrm quickconfig 修改allowunencrypted属性: 设置TrustedHosts: 利用步骤 构造恶意的BackendCookie 通过 AnonymousCalendarProxyRequestHandler 发送请求 实现SSRF攻击 参照CVE-2021-34473的利用方式: 获取SID并生成token 访问Exchange PowerShell执行命令 可选:搭建Flask代理到本地执行命令 参考代码 可利用的PoC代码参考: https://gist.githubusercontent.com/zdi-team/087026b241df18102db699fe4a3d9282/raw/ab4e1ecb6e0234c2e319bc229c71f2f4f70b55d9/P2O-Vancouver-2021-ProxyShell-snippet-7.py 防护建议 及时安装Microsoft发布的安全更新 限制Exchange Server的网络访问 监控异常的身份验证请求 实施网络分段,减少攻击面 总结 CVE-2021-28480是一个严重的Exchange Server漏洞,允许攻击者通过构造特定的BackendCookie实现SSRF攻击,进而可能导致远程代码执行。该漏洞与CVE-2021-26855有相似之处,但需要不同的利用路径。管理员应及时应用安全更新,并采取适当的防护措施。