Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    863582294

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漏洞調試環境的細節。

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

Zimbra服務器開啟調試模式

本地使用IDEA進行遠程調試

常用知識

0x02 Zimbra服務器開啟調試模式相關資料:

https://github.com/Zimbra-Community/zimbra-tools/blob/master/java-debug-zimbra-intellij-ide.md

詳細步驟如下:

1.停止Zimbra服務image.png

2.開啟調試模式image.png

此處先備份zmmailboxdmgr,再使用zmmailboxdmgr.unrestricted替換zmmailboxdmgr

3.添加調試信息image.png

注:

也可以直接修改/opt/zimbra/conf/localconfig.xml中的mailboxd_java_options屬性值

4.關閉防火牆image.png

5.重啟服務image.png

0x03 本地使用IDEA進行遠程調試1.下載jar文件本地使用IDEA進行遠程調試時,本地和遠程的代碼需要保持一致,也就是說,我們需要拿到zimbra相關的jar文件

zimbra文件位置:

/opt/zimbra/common/jetty_home/lib/

/opt/zimbra/common/jetty_home/lib/apache-jsp/

2.批量導入jar文件新建java工程,依次選擇File-Project Structure.在Libraries下選擇New Project Library-Java,設置為c:\zimbrajar\

3.添加斷點在External Libraries-zimbrajar下面打開.class文件,在合適的位置添加斷點

4.設置遠程調試參數頂部菜單欄選擇Add Configuration.在彈出的頁面中選擇Remote JVM Debug,填入遠程調試參數,參數示例:

image.png

使用的JDK選擇JDK 5-8

5.開啟Debug模式回到IDEA主頁面,選擇剛才的配置文件,點擊Debug圖標(快捷鍵Shift+F9)

如果遠程調試執行成功,斷點圖標會發生變化,增加一個對號

此時,Console頁面顯示如下:

image.png

0x04 常用知識Zimbra使用Jetty框架作為web容器

用戶在訪問jsp文件時,服務器先將JVM不認識的JSP文件解析成java文件,保存路徑為:/opt/zimbra/jetty_base/work/zimbra/jsp/org/apache/jsp/

每個jsp文件被成功訪問後,都會註冊一個JspServletWrapper實例,我們可以通過調試器查看request變量獲得所有已註冊的JspServletWrapper實例,也可以通過反射的方式以jsp文件的形式進行枚舉

jsp文件代碼示例:

image.png

整個反射的邏輯來自於跟踪調試的結果,實現邏輯不唯一,枚舉JspServletWrapper實例用到了ConcurrentHashMap枚舉

0x05 小結在我們搭建好Zimbra漏洞調試環境後,接下來就可以著手對漏洞和Jetty框架進行研究學習。