Tomcat漏洞說明與安全加固


Tomcat是Apache軟件基金會的一個免費的、開放源碼的WEB應用服務器,可以運行在Linux和Windows等多個平台上,由於其性能穩定、擴展性好、免費等特點深受廣大用戶的喜愛。目前,互聯網上絕大多數JAVA WEB應用都運行在Tomcat服務器上。

Tomcat作為Web應用的載體,一旦出現安全問題,那么運行在其上的Web應用的安全也無法得到保障,所以研究Tomcat的漏洞與安全性就非常有必要。本文通過實例詳細的講述了關於Tomcat攻防兩個方面。筆者首先在攻擊者的角度,以一個在滲透測試過程中經常利用的Tomcat漏洞作為實例,來詳細描述攻擊者是如何利用Tomcat服務器漏洞來入侵網站,並最終完全控制服務器的,然后又以網絡安全管理人員的角度,針對Tomcat的特點,詳細地介紹了如何對Tomcat進行安全加固。

利用Tomcat管理后台配置弱點滲透網站實例

Tomcat默認存在一個管理后台,默認的管理地址是http://IP或域名:端口號/manager/html。通過此后台,可以在不重啟Tomcat服務的情況下方便地部署、啟動、停止或卸載WEB應用。但是,如果配置不當的話就存在很大的安全隱患。攻擊者利用這個弱點可以非常快速、輕松地入侵一台服務器,下面我們來看一個實例。

目標IP:192.168.30.128

目的:完全控制服務器,獲取到管理員權限

滲透過程:

現在我們來訪問http://192.168.30.128:8080/manager/html,服務器會提示輸入賬號和密碼,如圖1所示。

那么我們如何獲取到這個用戶名和密碼呢?目前共有三種方法可以選擇:

一、如果采用的是運行在Windows平台上的Tomcat安裝版,並且版本在Tomcat 5.5.0 to 5.5.28或Tomcat 6.0.0 to 6.0.20之間,我們可以利用CVE-2009-3548這個漏洞來登錄后台。受該漏洞影響的Tomcat版本如果在安裝時不更改,那么Tomcat默認會建立一個名為“admin”,密碼為空的具有管理權限的賬號。下圖2是tomcat安裝版5.5.27的默認tomcat-users.xml配置文件:

注:Linux平台及Windows平台免安裝版本不受該漏洞影響。

二、如果采用類似“tomcat”、“654321”等這種很容易讓人猜到的字符作為密碼的話,我們可以直接猜測出該后台的賬號和密碼。

三、如果前兩種方法都沒有效果的話,我們可以采用暴力破解的方法來破解賬號和密碼,成功率取決於字典是否強大。在Windows和Metasploit下都有這樣的工具,下面我們來演示如何利用Metasploit下的工具暴力破解Tomcat后台賬號、密碼。
首先打開Metasploit控制台,輸入“use auxiliary/scanner/http/tomcat_mgr_login”,然后設置相應的配置信息,可設置的信息如下圖3所示。

設置好后,輸入“run”命令開始執行腳本。因為密碼比較簡單,所以很快就破解成功了,如圖4所示。

 

現在我們獲取到了Tomcat管理后台的賬號和密碼,可以直接登錄后台,上傳一個war格式的木馬,這樣我們就得到了一個webshell,如圖5所示

 

從圖6我們可以看到,Tomcat是以system權限運行的,這是系統最高權限。因此,我們不需要提權就可以直接添加后門賬號。

 

從上圖7我們看到成功添加了一個名為jspshell的管理員組賬號,並且目標服務器開啟了3389端口,我們可以通過遠程桌面來登錄,如圖8所示。

 

到此為此,這台服務器已經在我們的完全控制之下了。從上面的過程中我們可以看到這類漏洞的導致的后果非常嚴重,而且攻擊難度較低。實際上,中國電信某業務系統就曾經出現過這樣的漏洞,如圖9所示。

 

 

 

安全加固

Tomcat的安全加固我們主要從以下兩點考慮:一是Tomcat Web Server本身是否安全,比如是否存在安全漏洞;二是Tomcat Web Server是否提供了可使用的安全功能,這部分主要是檢查Tomcat的配置是否得當,在安全性、可用性、穩定性之間取得平衡。

Tomcat版本的選擇與安裝注意事項

檢查目前使用的Tomcat版本是否存在安全漏洞,如果存在安全漏洞,則需要升級到新的安全版本。在選擇Tomcat的版本時,我們一般選擇最新的穩定版本。這樣可以在安全性和穩定性之間取得一個很好的平衡。如果要從低版本升級到高版本,建議先在測試環境中測試通過后再進行升級,以避免由於兼容性帶來的問題。關於Tomcat的安全漏洞可以關注官方發布的安全公告(http://tomcat.apache.org/security.html),也可以關注一些漏洞發布平台的最新Tomcat漏洞信息。

在安裝時使用自定義的安裝路徑,並自定義WEB根目錄。可以在Tomcat安裝目錄的conf目錄下的server.xml中修改默認WEB根目錄。打開server.xml,找到如下圖10所示的內容:

在</Host>之前加入類似以下內容:

<Context path="" docBase="D:/javaweb" debug="0" reloadable="true" crossContext="true" />

上面語句的作用是設置Tomcat虛擬路徑,path代表虛擬目錄,可自定義,也可以為空,docBase代表物理路徑。如果按上面的設置,當訪問http://192.168.30.128:8080時實際訪問的是D:\javaweb目錄下的文件。如果path的值不為空,如設置為path=”java”時,那么訪問時應該這樣:http://192.168.30.128:8080/java。在修改完成后,需要重啟tomcat服務生效。

Tomcat安全配置

a. Tomcat降權

在Windows環境下,Tomcat默認以System權限運行(如圖11),這樣的后果是一旦成功入侵WEB應用,將直接得到一個高權限的Webshell,並且不需要提權操作就可以完全控制服務器。

現在我們來對Tomcat進行降權操作。首先新建一個用戶,設置復雜的密碼,並且讓它不屬於任何用戶組,如圖12所示。

 

接着打開“本地安全策略”--->“本地策略”--->“用戶權限分配”,找到“作為服務登錄”項,把剛剛新建的用戶添加進去,如圖13。

 

然后打開“服務”組件,找到Tomcat的服務,右鍵“屬性”--->“登錄”,用剛新建的tomcat賬號運行Tomcat服務,如圖14

 

再找到Tomcat安裝目錄,只為“Administrators組”和“tomcat”賬戶分配完全控制權限,並將其他賬戶權限全部刪除。如果不為tomcat賬戶分配權限,Tomcat服務將無法啟動。然后需要以最小權限原則為Tomcat日志目錄和WEB目錄單獨分配權限,日志目錄只需要分配“讀取”和“寫入”權限即可。

注:WEB目錄權限分配可依據以下原則:有寫入權限,一定不要分配執行權限;有執行權限,一定不要分配寫入權限。

網站上傳目錄和數據庫目錄一般需要分配“寫入”權限,但一定不要分配執行權限,其他目錄一般只分配“讀取”權限即可。配置好后,需要重啟Tomcat服務才能生效。

b. Tomcat日志安全配置

不論在那種服務器上,日志都是一個非常重要的部分,我們需要對它嚴加保護,在Tomcat上也是如此,它的日志默認保存在Tomcat安裝目錄的logs目錄下。要注意的是Tomcat默認並沒有開啟訪問日志,所以我們需要手工開啟它。打開server.xml,找到如下代碼,去掉它們的注釋,具體如下圖16所示.

然后修改日志的默認保存路徑,並設置只允許系統管理員有日志保存目錄的完全控制權限,tomcat賬戶有“讀取”和“寫入”權限即可,如圖17所示

 

c. 刪除默認文檔和示例程序

如果沒有自定義WEB目錄,還需要將默認WEB根目錄下的servlets-examples和tomcat-docs目錄及其及下的所有文件都刪除。以避免造成不必要的信息泄露或其他漏洞。servlets-examples和tomcat-docs目錄下的一些樣例都曾出現過安全漏洞,如CVE-2007-2449和CVE-2007-1355。

d. Tomcat默認管理后台安全配置

Tomcat默認存在一個管理后台,如果配置不當的話會引起非常嚴重的安全漏洞。在最開始的實例中我們就是利用該漏洞成功入侵目標服務器的。因此,我們非常有必要對它進行安全加固。一般情況下我們不需要該功能,所以建議刪除該管理頁面。方法是將%tocmat_home%/conf/Catalina/localhost目錄下的manager.xml刪除掉。

如果一定要使用的話,建議將該manager.xml的文件名修改為一個難猜測出來的文件名,並且找到Tomcat安裝目錄的conf目錄下的tomcat-user.xml,設置一個復雜的管理員賬號和密碼。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM