Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    863549680

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

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.png 10.png 11.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='test1@test.com'表示可訪問共享的郵箱

perm='r'表示權限為可讀,對應Viewer

Manager對應的配置為perm='rwidx',表示權限為讀、寫、添加和刪除

如果設置了Send stanard message,在設置後會向目的郵箱(例如test1@test.com)發送一份確認郵件,數據包格式示例:

15.png

郵箱test1@test.com會收到一份郵件,確認是否接受文件夾共享

2.代碼實現(1)添加文件共享

需要指定目標郵箱和共享文件夾

添加文件共享成功的響應中返回共享文件夾對應的zid

實現代碼示例:

16.png 17.png 18.png

(2)發送文件共享請求

需要指定目標郵箱

實現代碼示例:

19.png 20.png

這裡需要注意,只有在添加文件共享後,發送文件共享請求才能成功返回200,否則返回500,提示invalid request: no matching grant

(3)刪除文件共享

需要指定目標郵箱對應的zid和共享文件夾,zid可在添加文件共享成功的響應中獲得

實現代碼示例:

21.png 22.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漏洞上進行測試。