Tomcat漏洞說明與安全加固

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

Tomcat做爲Web應用的載體,一旦出現安全問題,那麼運行在其上的Web應用的安全也沒法獲得保障,因此研究Tomcat的漏洞與安全性就很是有必要。本文經過實例詳細的講述了關於Tomcat攻防兩個方面。筆者首先在攻擊者的角度,以一個在滲透測試過程當中常常利用的Tomcat漏洞做爲實例,來詳細描述攻擊者是如何利用Tomcat服務器漏洞來入侵網站,並最終徹底控制服務器的,而後又以網絡安全管理人員的角度,針對Tomcat的特色,詳細地介紹瞭如何對Tomcat進行安全加固。java

利用Tomcat管理後臺配置弱點滲透網站實例web

Tomcat默認存在一個管理後臺,默認的管理地址是http://IP或域名:端口號/manager/html。經過此後臺,能夠在不重啓Tomcat服務的狀況下方便地部署、啓動、中止或卸載WEB應用。可是,若是配置不當的話就存在很大的安全隱患。攻擊者利用這個弱點能夠很是快速、輕鬆地入侵一臺服務器,下面咱們來看一個實例。shell

目標IP:192.168.30.128數據庫

目的:徹底控制服務器,獲取到管理員權限apache

滲透過程:tomcat

如今咱們來訪問http://192.168.30.128:8080/manager/html,服務器會提示輸入帳號和密碼,如圖1所示。安全

那麼咱們如何獲取到這個用戶名和密碼呢?目前共有三種方法能夠選擇:服務器

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平臺免安裝版本不受該漏洞影響。

2、若是採用相似「tomcat」、「654321」等這種很容易讓人猜到的字符做爲密碼的話,咱們能夠直接猜想出該後臺的帳號和密碼。

3、若是前兩種方法都沒有效果的話,咱們能夠採用暴力破解的方法來破解帳號和密碼,成功率取決於字典是否強大。在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,設置一個複雜的管理員帳號和密碼。

相關文章
相關標籤/搜索