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解码实现:
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环境中进行。
漏洞复现
环境准备
- 使用未打2021年3月补丁的Exchange Server
- 确保网络位置设置为"Home network"或"Work network",不能是"Public network"
- 确保管理员用户设置了密码
- 开启WinRM服务:
winrm quickconfig - 修改allowunencrypted属性:
cd WSMan:\localhost\Client set-item .\allowunencrypted $true dir - 设置TrustedHosts:
Get-Item WSMan:\localhost\Client\TrustedHosts Set-Item WSMan:\localhost\Client\TrustedHosts -Value '*'
利用步骤
- 构造恶意的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有相似之处,但需要不同的利用路径。管理员应及时应用安全更新,并采取适当的防护措施。