Jump to content

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調試環境過程中一些問題的解決方法。

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...