ZDI年度五大漏洞之三——Microsoft Exchange任意用户伪造漏洞
字数 1753 2025-08-29 08:31:35

Microsoft Exchange任意用户伪造漏洞(CVE-2018-8581)技术分析

漏洞概述

CVE-2018-8581是Microsoft Exchange服务器中的一个严重漏洞,允许任何经过身份验证的用户模拟Exchange服务器上的其他用户。该漏洞结合了服务器端请求伪造(SSRF)和NTLM中继攻击技术,最终可实现邮箱规则注入等恶意操作。

漏洞原理

核心问题

  1. SSRF漏洞:Exchange允许用户为推送订阅指定任意URL,服务器会尝试向该URL发送通知
  2. 凭证泄露:Exchange服务器使用CredentialCache.DefaultCredentials进行连接,导致在NT系统权限下运行
  3. 注册表配置:默认设置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\DisableLoopbackCheck = 1,允许回环检查绕过

技术细节

  1. Exchange服务器会向攻击者控制的服务器发送NTLM哈希
  2. 这些NTLM哈希可用于HTTP身份验证访问Exchange Web服务(EWS)
  3. 由于在NT系统权限级别运行,攻击者可以使用TokenSerializationRight获得特权会话
  4. 通过构造特定的SOAP头,攻击者可模拟任意用户

漏洞利用步骤

准备工作

  1. 下载必要的Python脚本:
    • serverHTTP_relayNTLM.py - 从入站连接获取NTLM哈希并用于EWS身份验证
    • Exch_EWS_pushSubscribe.py - 触发PushSubscription EWS调用
  2. 安装python-ntlm模块

利用流程

  1. 获取目标用户SID

    • 以攻击者身份登录OWA
    • 创建任意文件夹(如tempFold)
    • 右键文件夹选择"Permissions...",添加目标用户邮箱
    • 按F12打开开发者工具,选择Network选项
    • 再次右键文件夹选择"Permissions..."
    • 检查service.svc?action=GetFolder响应中的SID:
      Body->ResponseMessages->Items->0->Folders->0->PermissionSet->Permissions->N->UserId->SID
      
      (N为最新添加的权限项索引)
  2. 配置攻击脚本

    • serverHTTP_relayNTLM.py中设置:
      • 目标SID
      • Exchange服务器地址
      • 监听端口(如8080)
    • Exch_EWS_pushSubscribe.py中设置:
      • Exchange服务器地址
      • 攻击者邮箱
      • 目标邮箱
      • 攻击者控制的服务器地址和端口
  3. 执行攻击

    • 先运行serverHTTP_relayNTLM.py
    • 再运行Exch_EWS_pushSubscribe.py
    • 触发推送通知(如创建/发送邮件、删除文件夹等)
  4. 验证攻击

    • 成功时会在serverHTTP_relayNTLM.py中看到入站连接
    • 响应中包含UpdateInboxRulesResponse ResponseClass="Success"表示规则添加成功
    • 测试发送邮件到受害者邮箱,检查是否被转发到攻击者邮箱

其他利用方式

  1. 使用AddDelegate EWS API
  2. 为目标文件夹分配编辑权限

漏洞修复方案

微软在2018年11月的补丁中修复了此漏洞(CVE-2018-8581),但实际修复方式是:

  1. 删除注册表项

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\DisableLoopbackCheck
    

    使用命令:

    reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa" /v DisableLoopbackCheck /f
    
    • 无需重启系统或Exchange服务
    • 后续Exchange版本不再默认启用此注册表项
  2. 集群环境注意事项

    • 需要在所有节点上应用修复
    • 确保配置一致性

漏洞影响

  1. 内部威胁:允许内部人员冒充其他用户
  2. 外部攻击:可作为攻击链的一部分扩大影响范围
  3. 潜在危害
    • 鱼叉式钓鱼攻击
    • 数据泄露
    • 恶意软件传播
    • 权限提升

防御建议

  1. 及时应用微软安全更新
  2. 定期检查并清理不必要的注册表项
  3. 实施网络分段,限制Exchange服务器的出站连接
  4. 监控异常EWS API调用
  5. 启用NTLM审计和限制

总结

CVE-2018-8581展示了Exchange服务器中身份验证机制的脆弱性,通过SSRF和NTLM中继的组合攻击,实现了任意用户模拟。该漏洞强调了:

  1. 内部威胁的严重性
  2. 默认配置可能带来的安全隐患
  3. 身份验证机制需要多层防御
  4. 及时更新和配置加固的重要性
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为最新添加的权限项索引) 配置攻击脚本 : 在 serverHTTP_relayNTLM.py 中设置: 目标SID Exchange服务器地址 监听端口(如8080) 在 Exch_EWS_pushSubscribe.py 中设置: Exchange服务器地址 攻击者邮箱 目标邮箱 攻击者控制的服务器地址和端口 执行攻击 : 先运行 serverHTTP_relayNTLM.py 再运行 Exch_EWS_pushSubscribe.py 触发推送通知(如创建/发送邮件、删除文件夹等) 验证攻击 : 成功时会在 serverHTTP_relayNTLM.py 中看到入站连接 响应中包含 UpdateInboxRulesResponse ResponseClass="Success" 表示规则添加成功 测试发送邮件到受害者邮箱,检查是否被转发到攻击者邮箱 其他利用方式 使用 AddDelegate EWS API 为目标文件夹分配编辑权限 漏洞修复方案 微软在2018年11月的补丁中修复了此漏洞(CVE-2018-8581),但实际修复方式是: 删除注册表项 : 使用命令: 无需重启系统或Exchange服务 后续Exchange版本不再默认启用此注册表项 集群环境注意事项 : 需要在所有节点上应用修复 确保配置一致性 漏洞影响 内部威胁 :允许内部人员冒充其他用户 外部攻击 :可作为攻击链的一部分扩大影响范围 潜在危害 : 鱼叉式钓鱼攻击 数据泄露 恶意软件传播 权限提升 防御建议 及时应用微软安全更新 定期检查并清理不必要的注册表项 实施网络分段,限制Exchange服务器的出站连接 监控异常EWS API调用 启用NTLM审计和限制 总结 CVE-2018-8581展示了Exchange服务器中身份验证机制的脆弱性,通过SSRF和NTLM中继的组合攻击,实现了任意用户模拟。该漏洞强调了: 内部威胁的严重性 默认配置可能带来的安全隐患 身份验证机制需要多层防御 及时更新和配置加固的重要性