ZDI年度五大漏洞之三——Microsoft Exchange任意用户伪造漏洞
字数 1753 2025-08-29 08:31:35
Microsoft Exchange任意用户伪造漏洞(CVE-2018-8581)技术分析
漏洞概述
CVE-2018-8581是Microsoft Exchange服务器中的一个严重漏洞,允许任何经过身份验证的用户模拟Exchange服务器上的其他用户。该漏洞结合了服务器端请求伪造(SSRF)和NTLM中继攻击技术,最终可实现邮箱规则注入等恶意操作。
漏洞原理
核心问题
- SSRF漏洞:Exchange允许用户为推送订阅指定任意URL,服务器会尝试向该URL发送通知
- 凭证泄露:Exchange服务器使用
CredentialCache.DefaultCredentials进行连接,导致在NT系统权限下运行 - 注册表配置:默认设置
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\DisableLoopbackCheck = 1,允许回环检查绕过
技术细节
- Exchange服务器会向攻击者控制的服务器发送NTLM哈希
- 这些NTLM哈希可用于HTTP身份验证访问Exchange Web服务(EWS)
- 由于在NT系统权限级别运行,攻击者可以使用
TokenSerializationRight获得特权会话 - 通过构造特定的SOAP头,攻击者可模拟任意用户
漏洞利用步骤
准备工作
- 下载必要的Python脚本:
serverHTTP_relayNTLM.py- 从入站连接获取NTLM哈希并用于EWS身份验证Exch_EWS_pushSubscribe.py- 触发PushSubscription EWS调用
- 安装
python-ntlm模块
利用流程
-
获取目标用户SID:
- 以攻击者身份登录OWA
- 创建任意文件夹(如tempFold)
- 右键文件夹选择"Permissions...",添加目标用户邮箱
- 按F12打开开发者工具,选择Network选项
- 再次右键文件夹选择"Permissions..."
- 检查
service.svc?action=GetFolder响应中的SID:
(N为最新添加的权限项索引)Body->ResponseMessages->Items->0->Folders->0->PermissionSet->Permissions->N->UserId->SID
-
配置攻击脚本:
- 在
serverHTTP_relayNTLM.py中设置:- 目标SID
- Exchange服务器地址
- 监听端口(如8080)
- 在
Exch_EWS_pushSubscribe.py中设置:- Exchange服务器地址
- 攻击者邮箱
- 目标邮箱
- 攻击者控制的服务器地址和端口
- 在
-
执行攻击:
- 先运行
serverHTTP_relayNTLM.py - 再运行
Exch_EWS_pushSubscribe.py - 触发推送通知(如创建/发送邮件、删除文件夹等)
- 先运行
-
验证攻击:
- 成功时会在
serverHTTP_relayNTLM.py中看到入站连接 - 响应中包含
UpdateInboxRulesResponse ResponseClass="Success"表示规则添加成功 - 测试发送邮件到受害者邮箱,检查是否被转发到攻击者邮箱
- 成功时会在
其他利用方式
- 使用
AddDelegateEWS API - 为目标文件夹分配编辑权限
漏洞修复方案
微软在2018年11月的补丁中修复了此漏洞(CVE-2018-8581),但实际修复方式是:
-
删除注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\DisableLoopbackCheck使用命令:
reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa" /v DisableLoopbackCheck /f- 无需重启系统或Exchange服务
- 后续Exchange版本不再默认启用此注册表项
-
集群环境注意事项:
- 需要在所有节点上应用修复
- 确保配置一致性
漏洞影响
- 内部威胁:允许内部人员冒充其他用户
- 外部攻击:可作为攻击链的一部分扩大影响范围
- 潜在危害:
- 鱼叉式钓鱼攻击
- 数据泄露
- 恶意软件传播
- 权限提升
防御建议
- 及时应用微软安全更新
- 定期检查并清理不必要的注册表项
- 实施网络分段,限制Exchange服务器的出站连接
- 监控异常EWS API调用
- 启用NTLM审计和限制
总结
CVE-2018-8581展示了Exchange服务器中身份验证机制的脆弱性,通过SSRF和NTLM中继的组合攻击,实现了任意用户模拟。该漏洞强调了:
- 内部威胁的严重性
- 默认配置可能带来的安全隐患
- 身份验证机制需要多层防御
- 及时更新和配置加固的重要性