(一) Tomcat簡介
Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬於輕量級應用 服務器,在中小型系統和並發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。對於一個初學者來說,可以這樣認為,當在一台機器上配置好Apache 服務器,可利用它響應 HTML ( 標准通用標記語言下的一個應用)頁面的訪問請求。實際上Tomcat是Apache 服務器的擴展,但運行時它是獨立運行的,所以當運行tomcat 時,它實際上作為一個與Apache 獨立的進程單獨運行的。
(二) 遠程代碼執行
1、 漏洞簡介及成因
Tomcat 運行在Windows 主機上,且啟用了 HTTP PUT 請求方法,可通過構造的攻擊請求向服務器上傳包含任意代碼的 JSP 文件,造成任意代碼執行。
影響版本: Apache Tomcat 7.0.0 – 7.0.81
2、 漏洞復現
配置漏洞,開啟put方法可上傳文件功能。
tomcat文件夾下的/conf/web.xml文件插入:
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
重啟tomcat服務。

訪問127.0.0.1:8080,burp抓包,send to Repeater,將請求方式改為PUT,創建一個122.jsp,並用%20轉義空格字符。123.jsp內容為:
<%Runtime.getRuntime().exec(request.getParameter("cmd"));%>
返回201,說明創建成功。

訪問127.0.0.1:8080/122.jsp?cmd=calc。
彈出計算器:

3、 漏洞修復
1)檢測當前版本是否在影響范圍內,並禁用PUT方法。
2)更新並升級至最新版。
(三)war后門文件部署
1、漏洞簡介及成因
Tomcat 支持在后台部署war文件,可以直接將webshell部署到web目錄下。
若后台管理頁面存在弱口令,則可以通過爆破獲取密碼。
2、漏洞復現
Tomcat安裝目錄下conf里的tomcat-users.xml配置如下:

訪問后台,登陸:

上傳一個war包,里面是jsp后門:

成功上傳並解析,打開:

可執行系統命令:

也可進行文件管理,任意查看、刪除、上傳文件:

3、漏洞修復
1)在系統上以低權限運行Tomcat應用程序。創建一個專門的 Tomcat服務用戶,該用戶只能擁有一組最小權限(例如不允許遠程登錄)。
2)增加對於本地和基於證書的身份驗證,部署賬戶鎖定機制(對於集中式認證,目錄服務也要做相應配置)。在CATALINA_HOME/conf/web.xml文件設置鎖定機制和時間超時限制。
3)以及針對manager-gui/manager-status/manager-script等目錄頁面設置最小權限訪問限制。
4)后台管理避免弱口令。
