写点什么

Exchange 漏洞分析:SSRF RCE

  • 2021 年 11 月 28 日
  • 本文字数:2395 字

    阅读完需:约 8 分钟

0x00 前言

在今年 3 月份,微软公布了多个 Microsoft Exchange 的高危漏洞。ProxyLogon 是 Exchange 历史上最具影响力的漏洞之一,有上千台 Exchange 服务器被植入了 webshell 后门。

0x01 漏洞描述

CVE-2021-26855 是一个 SSRF 漏洞,利用该漏洞可以绕过 Exchange 的身份验证,CVE-2021-27065 是一个文件写入漏洞。二者结合可以在未登录的状态下写入 webshell。

0x02 影响范围

Exchange Server 2019 < 15.02.0792.010


Exchange Server 2019 < 15.02.0721.013


Exchange Server 2016 < 15.01.2106.013


Exchange Server 2013 < 15.00.1497.012

0x03 调试环境及工具


【一>所有资源获取<一】1、200 份很多已经买不到的绝版电子书 2、30G 安全大厂内部的视频资料 3、100 份 src 文档 4、常见安全面试题 5、ctf 大赛经典题目解析 6、全套工具包 7、应急响应笔记

0x04 CVE-2021-26855 SSRF 漏洞

1. 补丁查看

通过对比补丁内容,快速定位漏洞位置。


Exchange 版本号查看:


打开 ExchangeManagement Shell,并执行命令:


Get-ExchangeServer | fl name,edition,admindisplayversion



版本对应关系可以在微软官网中查看



搜索对应版本的补丁(Exchange 2016 RTM 的补丁未找到,所以直接用 Exchange CU11 的补丁分析):



下载补丁KB5000871,使用 winrar 解压 cab 文件,解压后是一个 msp 文件,使用 7-zip 对 msp 格式的文件内容进行提取。



使用Telerik 对补丁内容做对比,内容有差异的 dll 文件如下,漏洞存在于 Microsoft.Exchange.FrontEndHttpProxy.dll 中:



使用 Reflector 对 dll 文件反编译并导出源码,方便对关键字进行搜索。

2. 漏洞调试

使用 dnSpy 对 Microsoft.Exchange.FrontEndHttpProxy.dll 文件进行反编译,定位到 class BEResourceRequestHandler,下断点。



点击 【调试】–>【附加到进程】 MSExchangeECPAppPool,使用 ProcessExplorer 查看对应的进程 ID。



使用进程 ID 进行过滤(注:必须以管理员权限运行 dnSpy,否则无法获取进程信息)。



在 BackEndCookieEntryParse 的 TryParse()函数下断点,bp 发请求,触发断点。




首先会根据 uri 来判断请求的协议类型,如果请求协议为 ecp,即请求 uri 为/ecp/。跟踪进入 CanHandle()函数,验证 cookie 及 uri 的合法性。



获取 cookie 中 X-BEResource 的值



判断 uri 是否合法



uri 以 js,css,html,flt,xap 等后缀结尾的文件(没有验证文件是否存在)都是合法的。拼接后 /ecp/xx.(js|css) 等都是有效 uri。


接着对 X-BEResource 的值进行处理




获取到 X-BEResource 的值



并使用‘~’分割得到数组 array




其中 array[0] 为 fqdn;array[1] 为 version


接着进行版本比较




如果版本的值小于 E15MinVersion,进入 if 判断语句,并将类成员变量 ProxyToDownLevel 赋值为 True,之后会调用身份认证函数 EcpProxyRequestHandler.AddDownLevelProxyHeaders 进行身份认证,如果没有通过认证,则返回 401 错误。同理如果 version 大于 E15MinVersion 则跳过 if 判断从而绕过身份认证。


经过一系列的解析




[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-582TsK39-1638085393980)(https://upload-images.jianshu.io/upload_images/26472780-8ed7d7d7dd4ed048.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]


可以看到 host 的值是 win2012,这个值我们可控,最后经过一系列的拼接得到 AbsoluteUri 的值:https://host/autodiscover/autodiscover.xml ,autodiscover.xml 文件中包含有 LegacyDN 的值。


进入 CreateServerRequest 函数,访问 uri,



进入 PrepareServerRequest 函数,会进行授权认证判断,



接着进入 AddProtocolSpecificHeadersToServerRequest,



由于 ProxyToDownLevel 被置为 false 不会进入 if 语句,从而导致可以直接绕过认证,进而在未授权的状态下获取 autodiscover.xml 文件内容。

0x05 CVE-2021-27065 任意文件写入漏洞

在 Exchange 服务器上依次打开【管理中心】 à 【服务器】 à 【虚拟目录】 à 【OAB 虚拟目录】。



由于外部 URL 的内容可控,所以可在 URL 写入一句话木马(其中 URL 必须以 http 开头,以保持外部 URL 参数的合法性)。



之后可以通过重置虚拟目录,来把配置内容写入指定的路径。



注:路径必须是 UNC 路径格式:\host\ShareFolder\aaa.xml


修改路径为:[\win2012.test.local\C$\test.aspx](file://win2012.test.local/C%24/test.aspx)



可以看到 OAB VirtualDirectory 的配置信息已经被写入 C:/test.aspx。



上述操作请求内容如下:


写入配置


POST /ecp/DDI/DDIService.svc/SetObject?schema=OABVirtualDirectory&msExchEcpCanary=pM2NWg8xu0euTUqTjiLwzquHekjm6dgIw6lt6YfDyflndCz1iGsGnnhEivzKafJL9vhOxpqYuAU.
复制代码


请求中有一个关键参数 msExchEcpCanary,如果没有这个参数,服务端返回 500 错误。这个参数的值可以利用 CVE-2021-26855 SSRF 漏洞通过多次请求获取。

0x06 漏洞利用过程

整个过程都是在未登录的状态下,利用 SSRF 漏洞访问内部资源,Cookie 中的 X-BEResource 字段内容为要访问的资源链接。利用过程如图:



  1. 获取 server name,/ecp/xx.js,cookie 中 mail.skyeye.com 为目标 exchange 的域名;



  1. 通过 SSRF 漏洞读取 autodiscover.xml 文件,获取 LegacyDN 的值;



  1. 利用 Legacy DN 获取 SID;


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dY4aGMjM-1638085394017)(https://upload-images.jianshu.io/upload_images/26472780-f27bad7a187ee1c1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]


  1. 利用 SID 获取 Session、msExchEcpCanary;



  1. 写入 shell。



cookie 中的 X-BEResource 字段内容为利用 SSRF 漏洞访问的内网资源。



指定保存路径



webshell 路径为:


https://[ip]/owa/auth/dkYAIm7ELFjJ3KVzXb1Q.aspx

0x07 检测修复方案

检测方案:针对上述漏洞,微软发布了一款工具,用于帮助用户检测 Exchange 是否被黑客利用相关漏洞入侵。



修复方案:


安装微软提供的漏洞补丁,相关漏洞补丁如下:


https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-26855


https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-27065

用户头像

我是一名网络安全渗透师 2021.06.18 加入

关注我,后续将会带来更多精选作品,需要资料+wx:mengmengji08

评论

发布
暂无评论
Exchange漏洞分析:SSRF RCE