中間件Tomcat介紹:
tomcat是?個開源?且免費的jsp服務器,默認端? : 8080,屬于輕量級應?服務器。它可以實現 JavaWeb程序的裝載,是配置JSP(Java Server Page)和JAVA系統必備的?款環境。
在歷史上也披露出來了很多的漏洞。以下講的就是三種經典的漏洞。
一、CVE-2017-12615【Tomcat put?法任意?件寫?漏洞】
漏洞原理:
當在Tomcat的conf(配置?錄下)/web.xml配置?件中添加readonly設置為false時,將導致該漏洞產?,(需要允許put請求)?, 攻擊者可以利?PUT?法通過精?構造的數據包向存在漏洞的服務器??上傳 jsp?句話?件,從?造成遠程命令執?,getshell等。
1. 開啟靶場環境
【Centos7.6 虛擬機中開啟環境,也可以在云服務器中搭建環境】
切換目錄:cd /vulhub-master/tomcat/CVE-2017-12615
修改版本為3:vim docker-compose.yml
開啟環境:docker-compose up -d
查看開啟環境的端口:docker ps,發現端口是8080
注意:如果端口被占用,在修改版本步驟中,也可以修改端口,同時保證“安全”處該端口保證開放【如果看過之前分享的內容,會知道我們將1-65535端口都開放了】。再重新啟動環境即可。
2. 訪問靶場網址? ip+端口? ?
192.168.182.143:8080
3.? 首頁抓包,修改為PUT方式提交
Tomcat允許適?put?法上傳任意?件類型,但不允許jsp后綴?件上傳,因此我們需要配合 windows的 解析漏洞。? ? ? ? PUT /shell.jsp%20
get方式修改為put方式上傳txt文件進行測試【必須先測試,養成習慣】
訪問上傳的1.txt文件,發現顯示了內容,上傳成功。
4. 使用哥斯拉生成jsp木馬文件,并上傳到靶場
打開哥斯拉【Godzilla】,點擊管理--生成,有效載荷為Java,點擊生成,保存為1.jsp文件。
再次嘗試上傳文件,以2.jsp為例,上傳內容為123,發現上傳失敗。結合上一步txt文件上傳成功,分析出上傳方式沒問題,而上傳文件的后綴jsp不可以。【這是體現了先測試txt文件上傳的重要性】
遇到文件后綴被過濾,思考:加空格、加斜杠(/)或者數據流繞過(::$DATA)
加空格,訪問地址為ip:8080/2.jsp空格,發現仍然失敗。
加 /,訪問地址為:ip:8080/1.jsp/,被當做目錄執行。
接著上傳我們通過哥斯拉生成的木馬1.jsp文件,上傳成功
5. 訪問上傳的jsp木馬文件,哥斯拉進行連接
哥斯拉連接?
右鍵--進入--文件管理,就可以控制目標了
6. 關閉docker開啟的容器,并刪除
docker ps先查看當前開啟的docker容器服務,
docker stop? 查到需要關閉的容器id,回車進行關閉
docker rm 容器id,刪除容器。【一定要先關閉服務,再刪除容器】
注意:容器記得及時關閉刪除,避免資源占用和浪費。同時預防端口被占用問題。
二、后臺弱?令部署war包
漏洞原理:
在tomcat8環境下默認進?后臺的密碼為 tomcat/tomcat ,未修改造成未授權即可進?后臺,或者管 理員把密碼設置成弱?令。
1.環境搭建
切換目錄:cd vulhub-master/tomcat/tomcat8
開啟靶場環境:docker-compose up -d
修改版本為3:vim docker-compose.yml
再次開啟環境。
開啟成功?
2.訪問ip:端口
docker ps查看開啟docker容器的端口,端口為8080
3.弱口令登錄管理界面
直接點擊Manager App或者訪問管理員界面ip:8080/manager/html
弱口令:tomcat、tomcat
登錄成功
4.??制作WAR包
發現可上傳war文件


5.?件上傳成功后,默認會在?站根?錄下?成和war包名稱?致得?錄,然后?錄中得??就是壓縮 前的?件名。
發現/1,這就是我們上傳的。
6. 該文件里有我們的1.jsp木馬文件,進行訪問
ip:8080/1/1.jsp
7.? 哥斯拉進行連接,可控制目標
8. 關閉環境容器,并刪除
docker ps----------》? docker stop 容器id,停止服務? ---》docker rm 容器id,刪除容器
三、CVE-2020-1938【Tomcat?件包含漏洞 】
靶場原理:
由于Tomcat AJP協議設計上的缺陷,攻擊者通過Tomcat AJP Connector 可以讀取或包含Tomcat上所 有 Webapp?錄下的任意?件,例如:
可以讀取webapp配置?件或源碼?件。
此外如果?標應?有?件上傳的功能情況下,配合為?件包含漏洞利?GetShell。
1.環境搭建
cd vulhub-master/tomcat/CVE-2020-1938
docker-compose up -d
修改版本號為3:vim docker-compose.yml
再次開啟環境:docker-compose up -d?
查看端口:docker ps ,端口為8009
2.訪問ip:8009失敗,訪問8080成功
tomcat默認的conf/server.xml中配置了2個Connector,?個為 8080 的對外提供的HTTP協議端?, 另 外?個就是默認的 8009 AJP協議端?,兩個端?默認均監聽在外?ip。
3.POC:
下載tomcat文件包含.py,拖進kali,使用python2進行運行【必須是python2】。
python2 Tomcat-ROOT路徑下文件包含(CVE-2020-1938).py -p 8009 -f /WEB-INF/web.xml 192.168.182.143?
讀取到目標文件內容,練習成功。
4.關閉環境,刪除容器
查看當前開啟的容器信息:docker ps
關閉目標容器:docker stop id
刪除目標容器:docker rm id
【及時關閉并且刪除目標容器,可以節省空間資源和預防端口占用問題】
Tomcat的漏洞簡單練習到這。
對于中間件之一的漏洞了解,望對每位讀者有所成效。
拜拜。。。?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ---------2025/3/24 0:24