​Exchange Web Service(EWS)开发指南2——SOAP XML message - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

​Exchange Web Service(EWS)开发指南2——SOAP XML message

3gstudent 技术 2020-06-08 09:28:05
661143
收藏

导语:本文介绍了SOAP XML message的使用,开源代码ewsManage.py,实现了利用hash对Exchange资源的访问。

0x00 前言

在之前的文章《Exchange Web Service(EWS)开发指南》开源了工具ewsManage,实现了对Exchange资源的访问。

本文将要更近一步,通过SOAP XML message实现利用hash对Exchange资源的访问。

0x01 简介

本文将要介绍以下内容:

· 利用hash访问Exchange资源的方法

· SOAP XML message的使用

· 开源Python实现代码

· 代码开发细节

0x02 利用hash访问Exchange资源的方法

在之前的文章《渗透技巧——Pass the Hash with Exchange Web Service》介绍了使用hash登录ews的方法。

本文将要基于之前的研究,介绍登录ews以后访问Exchange资源的方法,所以在程序实现上会继续选择Python,使用EWS SOAP XML message访问Exchange的资源。

对于EWS SOAP XML message的格式,有以下两种方法进行参考:

1.查找资料

· https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/get-started-with-ews-client-applications

· https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/ews-xml-elements-in-exchange

2.抓包分析

配置Wireshark,实现在Exchange Server上面捕获明文通信数据。

使用ewsManage访问Exchange资源。

捕获通信数据,能够获得不同操作对应的EWS SOAP XML message格式,示例如下图:

下载.png

0x03 SOAP XML message的使用

相比于EWS Managed API,SOAP XML message更底层,需要考虑的细节也更多一些。

1.查看收件箱的邮件数量

发送的XML格式:

image.png

返回的内容格式:

image.png

通过返回内容可以获得收件箱的邮件总数量,未读邮件数量。

2.获得收件箱邮件信息

发送的XML格式:image.png

通过返回内容可以获得收件箱所有邮件的标题、收发关系、是否带有附件等,但无法显示正文内容和附件名称。

通过返回内容能够获得每个邮件对应的ItemId和ChangeKey,进而获得邮件内容、附件的名称和ID。

3.获得指定邮件的具体内容

发送的XML格式:

image.png

其中的{id}为指定邮件对应的ItemId,{key}为指定邮件对应的ChangeKey。

通过返回内容可以获得邮件的详细信息,包括正文内容。

4.获得指定邮件的附件名称

发送的XML格式:image.png

其中的{id}为指定邮件对应的ItemId。

返回的内容格式:image.png

通过返回内容可以获得附件的名称,但无法获得附件的内容。

通过返回内容能够获得每个附件对应的Id,进而获得附件的类型和内容。

5.获得指定附件的内容

发送的XML格式:image.png

其中的{id}为指定附件对应的Id

返回的内容格式:

image.png

其中的{xxxxxxx}为base64编码后的内容,解码后可获得附件的内容。

这是需要注意附件的类型,如果为text,表示文本类型,否则在保存附件时需要以二进制格式写入。

0x04 开源Python实现代码

代码如下:

11.jpg

使用Python实现,脚本运行前需要安装Impacket。

安装方法: pip install Impacket。

分别支持对明文和ntlm hash的登录。

在功能上基本上和ewsManage保持一致。

支持以下功能:

· 查看收件箱邮件数量

· 查看发件箱邮件数量

· 查看收件箱邮件信息

· 查看发件箱邮件信息

· 查看指定邮件的具体信息

· 查看指定附件的信息

· 保存指定附件

用法示例:

(1)查看收件箱邮件数量(使用明文登录)

ewsManage.py 192.168.1.1 443 plaintext test.com user1 password1 getfolderofinbox

(2)查看收件箱中的邮件信息(使用hash登录)

ewsManage.py 192.168.1.1 443 ntlmhash test.com user1 c5a237b7e9d8e708d8436b6148a25fa1 listmailofinbox

(3)查看指定邮件的具体信息

查看收件箱中的邮件信息:

ewsManage.py 192.168.1.1 443 plaintext test.com user1 password1 listmailofinbox

结果保存为listmailofinbox.xml,从文件中获得对应邮件的ItemId和ChangeKey。

查看指定邮件的具体信息:

ewsManage.py 192.168.1.1 443 plaintext test.com user1 password1 getmail

接着输入邮件的ItemId和ChangeKey。

最终结果保存为getmail.xml。

如下图:

image.png

(4)保存指定附件

查看收件箱中的邮件信息:

ewsManage.py 192.168.1.1 443 plaintext test.com user1 password1 listmailofinbox

结果保存为listmailofinbox.xml,从中获得对应邮件的ItemId。

查看指定附件的信息:

ewsManage.py 192.168.1.1 443 plaintext test.com user1 password1 getattachment

接着输入邮件的ItemId。

命令行输出附件名称。

结果保存为getattachment.xml,从文件中获得对应附件的Id。

如下图:

image.png

保存指定邮件:

ewsManage.py 192.168.1.1 443 plaintext test.com user1 password1 saveattachment

接着输入附件的Id。

自动保存附件,区分是否为text格式。

结果保存为saveattachment.xml

如下图:

image.png

0x05 小结

本文介绍了SOAP XML message的使用,开源代码ewsManage.py,实现了利用hash对Exchange资源的访问。

本文为 3gstudent 原创稿件,授权嘶吼独家发布,如若转载,请注明原文地址
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务