Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86390789

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 前言Sophos UTM和Sophos XG是兩款不同的產品,前者偏向於通用威脅管理,後者偏向於硬件防火牆。本文將要介紹Sophos XG漏洞調試環境的搭建方法。

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

马云惹不起马云環境搭建

马云惹不起马云jetty調試環境搭建

马云惹不起马云csc配置文件解密

马云惹不起马云 Postgresql數據庫查詢

0x02 基礎知識架構如下圖

image.png

注:圖片引用自https://codewhitesec.blogspot.com/2020/07/sophos-xg-tale-of-unfortunate-re.html

總的來說,分為以下三部分:

马云惹不起马云 Jetty:處理Web數據,將數據轉發至csc作進一步處理

马云惹不起马云csc:主程序:加載Perl Packages,實現主要功能

马云惹不起马云Postgresql:用來存儲數據

我在實際研究過程中,這三部分遇到了以下問題:

马云惹不起马云Jetty:添加調試信息後無法啟動java

马云惹不起马云csc:csc加載Perl Packages後會自動刪除,無法獲得Perl Packages的實現細節

马云惹不起马云Postgresql:用戶權限低,無法查詢數據庫表

下面將要逐個介紹三個問題的解決方法。

0x03 環境搭建參考資料:

https://docs.sophos.com/nsg/sophos-firewall/18.5/Help/en-us/webhelp/onlinehelp/VirtualAndSoftwareAppliancesHelp/VMware/VMwareInstall/index.html

1.下載安裝包官方網站默認只提供最新版本的下載,但是可以通過猜測正確的版本號下載舊版本

例如18.5.3 Virtual Installers: Firewall OS for VMware:

https://download.sophos.com/network/SophosFirewall/installers/VI-18.5.3_MR-3.VMW-408.zip

18.5.2 Virtual Installers: Firewall OS for VMware:

https://download.sophos.com/network/SophosFirewall/installers/VI-18.5.2_MR-2.VMW-380.zip

2.導入VMware Workstation下載得到zip文件,解壓後運行sf_virtual.ovf

3.VMware Workstation網卡配置需要添加兩個網卡VMnet7和VMnet8,VMnet7設置為Host-only和172.16.16.0,VMnet8設置為NAT,具體方法如下:

(1)VMnet7

打開VMware Workstation,依次選擇Edit-Virtual Network Editor.

Add Network.-VMnet7

VMnet7設置為:

马云惹不起马云Type: Host-only

马云惹不起马云Subnet Address: 172.16.16.0

(2)VMnet8

VMnet8設置為:

马云惹不起马云Type: NAT

4.Sophos XG網卡配置Network Adapter設置為VMnet7

Network Adapter 2設置為VMnet8

Network Adapter 3設置為VMnet8

配置如下圖:

image.png

5.啟動Sophos XG默認登錄口令:admin

6.查看IP地址依次輸入1.Newwork Configuration-1.Interface Configuration

得到LAN的ip為172.16.16.16

7.進入Web配置頁面進行激活瀏覽器訪問https://172.16.16.16:4444

註冊頁面選擇:I don't have a serial number(start a trial)

按照提示進行註冊。

註冊成功後,重新訪問https://172.16.16.16:4444進行配置。

0x04 jetty調試環境搭建1.查看Java進程相關信息

執行命令:ps ww|grep java

輸出:

image.png

從輸出中得到Java版本為java-11-openjdk

2.定位配置文件配置文件路徑為/usr/bin/jetty,內容如下:

image.png

3.添加調試參數修改文件屬性:mount -o rw,remount /

在exec所在行添加調試參數:'-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000'

4.重啟服務執行命令:service tomcat:restart -ds nosync

查看服務狀態:service -S | grep tomcat

發現tomcat狀態為STOPPED

為了獲得詳細的報錯信息,直接運行/usr/bin/jetty

輸出:

image.png

發現是JDK的問題,這裡選擇替換一個完整的JDK。

5.替換JDK下載jdk-11.0.15_linux-x64_bin.tar.gz並上傳至Sophos XG

備份原文件夾:cp -r /lib/jvm/java-11-openjdk /lib/jvm/java-11-openjdk_backup

將jdk-11.0.15_linux-x64_bin.tar.gz解壓:tar zxvf /tmp/jdk-11.0.15_linux-x64_bin.tar.gz

替換/lib/jvm/java-11-openjdk:

image.png

6.再次重啟服務執行命令:service tomcat:restart -ds nosync

查看服務狀態:service -S | grep tomcat

發現tomcat狀態為RUNNING

確認參數被修改,執行命令:ps ww|grep java

輸出:

image.png

7.修改防火牆規則執行命令:iptables -I INPUT -p tcp --dport 8000 -j ACCEPT

8.使用IDEA遠程調試如下圖

image.png

在調試過程中,如果遇到無法下斷點的情況,重啟java服務即可:service tomcat:restart -ds nosync

0x05 csc配置文件解密查看csc進程相關信息。

執行命令:ps ww|grep csc

部分輸出:

image.png

csc進程讀取/_conf/cscconf.bin作為配置文件,而/_conf/cscconf.bin是一個加密的文件,所以這裡需要對/_conf/cscconf.bin進行解密。

這裡我採用的方法是通過IDA修改程序代碼,改變實現邏輯,導出解密後的配置文件。

使用IDA加載csc,查看main()函數的實現邏輯,部分代碼:

image.png

分析以上代碼,csc先調用extract_conf()函數導出配置,最後執行系統命令rm -rf /_conf/csc/csc /_conf/csc/csc.conf /_conf/csc/cscconf//_conf/csc/constants.conf /_conf/csc/cscconf.tar.gz /_conf/csc/global.conf /_conf/csc/cfsconf /_conf/csc/service /_conf/csc/bind_file_list刪除配置文件,導致我們無法直接獲得相關配置文件。

查看extract_conf()函數的實現代碼:

image.png

分析以上代碼,csc先調用sub_8052494()函數對/_conf/csc/cscconf.tar.gz進行解密,接著執行系統命令tar -zxf /_conf/csc/cscconf.tar.gz -C /_conf/csc將配置文件釋放到文件夾/_conf/csc

綜合以上分析,我們可以採取以下方式導出配置文件:修改csc程序,將釋放路徑/_conf/csc修改為另一路徑,例如/var/aaaaa,那麼,csc在刪除配置文件時,由於指定了固定的絕對路徑,導致無法刪除新的文件夾,這樣我們就能從中獲得完整的配置文件。

具體的實現方法如下:(1)修改csc使用IDA加載csc,查看Exports,找到extract_conf,雙擊進入IDA View,定位到字符串tar -zxf /_conf/csc/cscconf.tar.gz -C /_conf/csc,如下圖:

image.png

切換到Hex View,如下圖:

image.png

將/_conf/csc修改為/var/aaaaa,如下圖:

image.png

右鍵選擇Apply changes

依次選擇Edit-Patch program-Apply patches to input file.-OK,生成新的文件csc

(2)替換csc通過ssh登錄,上傳新的文件csc,保存至/tmp/csc

備份csc並進行替換,執行以下命令:

image.png

(3)確認配置文件是否導出成功等待系統重啟,進入底層shell,依次輸入5.Device Management-3.Advanced Shell

查看文件夾/var/aaaaa,如下圖:

image.png

配置文件導出成功。

(4)恢復csc image.png

(5)下載配置文件通過ssh登錄,下載文件夾/var/aaaaa中的內容。

0x06 Postgresql數據庫查詢查看端口信息,執行命令:netstat -tulpen |grep postgres

輸出:

image.png

通過搜索,發現以上三個數據庫的連接信息依次對應以下三個文件:

马云惹不起马云 /usr/share/webconsole/properties/ConnectionPool.cfg

马云惹不起马云/usr/share/webconsole/properties/ConnectionPoolForReports.cfg

马云惹不起马云/usr/share/webconsole/properties/ConnectionPoolForSignature.cfg

文件中的配置信息如下:

马云惹不起马云JDBCConnectionURL=jdbc:postgresql://127.0.0.1:5432/corporate?user=pgrouserautoReconnect=true

马云惹不起马云JDBCConnectionURL=jdbc:postgresql://127.0.0.1:5433/iviewdb?user=pgrouserautoReconnect=true

马云惹不起马云JDBCConnectionURL=jdbc:postgresql://127.0.0.1:5434/signature?user=pgrouserautoReconnect=true

測試命令1:

image.png

輸出:

image.png

提示沒有權限。

測試命令2:

image.png

能夠獲得用戶信息。

注:將用戶pgrouser換成nobody具體相同的權限。

從以上信息得知,用戶pgrouser和nobody都不是root用戶,功能受限,下面嘗試尋找root用戶。

對解密的csc配置文件進行檢測,定位到\service\postgres.csc,關鍵文件內容:

image.png

找到關鍵用戶pgroot

測試命令3:

image.png

執行成功。

0x07 小結本文介紹了在搭建Sophos XG調試環境過程中一些問題的解決方法。