Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86390537

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开发指南》 和《Zimbra-SOAP-API开发指南2》 介紹了Zimbra SOAP API的調用方法,開源代碼Zimbra_SOAP_API_Manage。 本文將要在此基礎上擴充功能,添加郵件操作的相關功能。

0x01 簡介本文將要介紹以下內容:

查看郵件

發送郵件

刪除郵件

0x02 查看郵件Zimbra SOAP API說明文檔:https://files.zimbra.com/docs/soap_api/9.0.0/api-reference/index.html

結合Zimbra SOAP API說明文檔和調試結果得出以下實現流程:

調用Search命令獲得郵件對應的Item id,通過Item id作為郵件的識別標誌。

獲得Item id後可以對郵件做進一步操作,如查看郵件細節、移動郵件、刪除郵件等。

1.獲得郵件對應的Item id需要使用Search命令。

說明文檔:https://files.zimbra.com/docs/soap_api/8.8.15/api-reference/zimbraMail/Search.html

需要用到以下參數:

(1)query

表示查看的位置,示例如下:

image.png

(2)limit

表示返回的查詢結果數量,示例如下:

image.png

如果不指定該屬性,默認為10

測試代碼:

image.png

返回內容示例:

image.png

對以上格式分析,發現標籤c***對應每個郵件的信息,提取數據如下:

image.png

格式分析如下:

image.png

時間格式轉換的示例代碼:

image.png

綜合以上內容,得出提取Item id、發件人、標題、正文內容和發送時間的實現代碼:

image.png

2.查看郵件內容測試發現,查看郵件細節可以不依賴Zimbra SOAP API,訪問固定url即可。

image.png

通過這種方式可以獲得完整的郵件內容,包括Base64編碼的附件內容。

實現代碼:

image.png

0x03 發送郵件在發送帶有附件的郵件時,需要先上傳附件,再發送。

1.上傳附件上傳功能通過FileUploadServlet實現,對應代碼位置:/opt/zimbra/lib/jars/zimbrastore.jar中/com.zimbra/cs/service/FileUploadServlet.class

上傳細節可參考:https://github.com/Zimbra/zm-mailbox/blob/develop/store/docs/file-upload.txt

上傳的url: https://

image.png

如果添加參數fmt=raw,extended,返回結果示例:

image.png

經過比較,發現添加參數fmt=raw,extended能夠額外獲得文件類型,示例:'ct':'image/jpeg'

所以在上傳時,使用url: https://url /service/upload?fmt=raw,extended

綜合以上內容,得出以下實現代碼:

image.png

2.發送帶有附件的郵件需要使用SendMsg命令。

說明文檔:https://files.zimbra.com/docs/soap_api/8.8.15/api-reference/zimbraMail/SendMsg.html

需要用到以下參數:

(1)e

表示發件人和收件人等相關信息,示例如下:

image.png

(2)su

表示郵件標題,示例如下:

image.png

(3)mp

表示正文內容,示例如下:

image.png

(4)noSave

如果設置為1,表示郵件發送後,不在發件箱保存副本,示例代碼:

image.png

(5)attach

指定發送附件的aid,示例代碼:

image.png

綜合以上內容,得出發送帶有附件郵件的實現代碼:

image.png

0x04 刪除郵件需要使用ConvAction命令。

說明文檔:https://files.zimbra.com/docs/soap_api/8.8.15/api-reference/zimbraMail/ConvAction.html

需要用到以下參數:

(1)tcon

image.png

通過瀏覽器刪除郵件的流程是先點擊刪除郵件,將郵件移動至垃圾箱,再從垃圾箱中點擊刪除郵件,完成郵件的徹底刪除。

通過Zimbra-SOAP-API可以簡化以上流程,直接刪除郵件。

實現代碼:

image.png

0x05 開源代碼新的代碼已上傳至github,地址如下:

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

優化了代碼結構,增加了以下功能:

DeleteMail,刪除指定郵件

SearchMail,獲得郵箱信息,包括Item id、發件人、標題、正文內容和發送時間

SendTestMailToSelf,向當前郵箱發送一封帶有附件的郵件

uploadattachment,上傳附件

uploadattachmentraw,上傳附件的另一種實現,用於特定條件

viewmail,查看郵件完整細節

0x06 小結本文擴充了Zimbra SOAP API的調用方法,添加三個實用功能:查看郵件、發送郵件和刪除郵件,記錄實現細節。