【技术原创】Zimbra-SOAP-API开发指南4——邮件导出和文件夹共享
2022-11-10 12:0:0 Author: www.4hou.com(查看原文) 阅读量:17 收藏

导语:本文将要继续扩充开源代码Zimbra_SOAP_API_Manage的功能,实现邮件导出和文件夹共享,分享开发细节。

0x00 前言

本文将要继续扩充开源代码Zimbra_SOAP_API_Manage的功能,实现邮件导出和文件夹共享,分享开发细节。

0x01 简介

本文将要介绍以下内容:

邮件导出

文件夹共享

开源代码

0x02 邮件导出

Zimbra支持导出当前邮箱的所有邮件,通过Web界面的操作方法如下:

登录邮箱后,依次选择Preferences->Import/Export,如下图

1.png

接下来,通过抓包的方式分析实现流程,进而使用程序实现这部分功能

1.默认配置导出邮件

默认配置下,会导出所有邮件,以压缩包的形式保存

访问URL示例:

2.png

参数解析:

admin%40test.com为邮箱用户,可以用~替代

filename=All-2022-07-27-181056为存在记录时保存的文件名,2022-07-27-181056对应的时间格式为年-月-日-时分秒,时间为带时区的时间,需要计算时差

emptyname=No+Data+to+Export为空记录时保存的文件名

在程序实现上,需要同Web操作的格式保持一致,代码细节:

(1)构造保存的文件名

3.png

(2)保存文件

保存文件时使用binary写入

4.png

实现代码示例:

5.png

2.加入筛选条件导出邮件

高级选项下,可以添加筛选条件,导出特定的邮件

访问URL示例:

6.png

参数解析,新增加了以下参数:

start=1658818800000为筛选的起始时间,格式为unix时间戳,没有额外计算时差

end=1658991600000为筛选的结束时间,格式为unix时间戳,没有额外计算时差

query=content%3Apassword为筛选的关键词,作用是查询正文中带有password关键词的邮件

筛选条件的语法可参考:https://wiki.zimbra.com/wiki/Zimbra_Web_Client_Search_Tips

代码实现细节:

(1)时间格式转换的示例代码

时间转换成秒:

7.png秒转换成时间:

8.png

实现代码示例:

9.png10.png11.png

0x03 文件夹共享

1.流程分析

Zimbra支持将当前邮箱的文件夹共享至其他用户,通过Web界面的操作方法如下:

登录邮箱后,依次选择Preferences->Sharing,如下图

12.png

文件夹共享可选择以下三个文件夹:

Inbox

Sent

Junk

如下图

13.png

设置共享属性如下图

需要区别以下设置:

(1)Role

Viewer只能查看邮件

Manager可以修改邮件

(2)Message

Send stanard message,在设置后会向目的邮箱发送一份确认邮件

Do not send mail about this share,不发送确认邮件

这里可以通过抓包分析每项设置对应的具体数值

示例数据包1:

14.png

格式分析:

(1)

id="2"表示Inbox

Sent对应id="5"

Junk对应id="4"

通过测试,还可以指定Drafts,对应id="6"

(2)

d="[email protected]"表示可访问共享的邮箱

perm="r"表示权限为可读,对应Viewer

Manager对应的配置为perm="rwidx",表示权限为读、写、添加和删除

如果设置了Send stanard message,在设置后会向目的邮箱(例如[email protected])发送一份确认邮件,数据包格式示例:

15.png

邮箱[email protected]会收到一份邮件,确认是否接受文件夹共享

2.代码实现

(1)添加文件共享

需要指定目标邮箱和共享文件夹

添加文件共享成功的响应中返回共享文件夹对应的zid

实现代码示例:

16.png17.png18.png

(2)发送文件共享请求

需要指定目标邮箱

实现代码示例:

19.png20.png

这里需要注意,只有在添加文件共享后,发送文件共享请求才能成功返回200,否则返回500,提示invalid request: no matching grant

(3)删除文件共享

需要指定目标邮箱对应的zid和共享文件夹,zid可在添加文件共享成功的响应中获得

实现代码示例:

21.png22.png

0x04 开源代码

新的代码已上传至github,地址如下:

https://github.com/3gstudent/Homework-of-Python/blob/master/Zimbra_SOAP_API_Manage.py

添加以下五个功能:

AddShare:添加文件夹共享,默认权限为rwidx

ExportMail:导出带有搜索条件的邮件,可指定日期和关键词

ExportMailAll:导出所有邮件

RemoveShare:删除当前邮箱的文件夹共享

SendShareNotification:在添加文件夹共享后,向目标邮箱发送一封确认邮件

0x05 小结

本文扩充了Zimbra SOAP API的调用方法,添加五个实用功能,实现方法和思路还可在XSS漏洞上进行测试。

如若转载,请注明原文地址

  • 分享至

取消 嘶吼

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

扫码支持

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


文章来源: https://www.4hou.com/posts/LBwW
如有侵权请联系:admin#unsafe.sh