Tomcat7+ 弱口令 && 后台getshell漏洞
Tomcat版本:8.0
環境說明
Tomcat支持在后台部署war文件,可以直接將webshell部署到web目錄下。其中,欲訪問后台,需要對應用戶有相應權限。
Tomcat7+權限分為:
- manager(后台管理)
- manager-gui 擁有html頁面權限
- manager-status 擁有查看status的權限
- manager-script 擁有text接口的權限,和status權限
- manager-jmx 擁有jmx權限,和status權限
- host-manager(虛擬主機管理)
- admin-gui 擁有html頁面權限
- admin-script 擁有text接口權限
這些權限的究竟有什么作用,詳情閱讀 http://tomcat.apache.org/tomcat-8.5-doc/manager-howto.html
用戶tomcat擁有上述所有權限,密碼是tomcat
正常安裝的情況下,tomcat8中默認沒有任何用戶,且manager頁面只允許本地IP訪問。只有管理員手工修改了這些屬性的情況下,才可以進行攻擊。
這篇文章其實跟我上一篇:12.Weblogic 弱口令 && 后台getshell漏洞 都是一樣的套路,只是tomcat中間件使用較多,所以需要拿出來另外復現
上篇文章有的小白問為什么需要上傳war包,為什么不是tar.zip一類的,這里做一個說明:
war包是用來進行Web開發時一個網站項目下的所有代碼,包括前台HTML/CSS/JS代碼,以及后台JavaWeb的代碼。
當開發人員開發完畢時,就會將源碼打包給測試人員測試,測試完后若要發布則也會打包成War包進行發布。War包
可以放在Tomcat下的webapps或word目錄,當Tomcat服務器啟動時,War包即會隨之解壓源代碼來進行自動部署。
我們依舊使用docker搭建漏洞靶場環境,一般來說tomcat默認應該是在8080端口,
打開tomcat管理頁面 http://192.168.0.132:8080/manager/html,就是我們正常訪問tomcat頁面:
輸入弱密碼 tomcat:tomcat,即可訪問后台:
先將jsp大馬壓縮為zip,再將zip后綴改名為war,然后上傳war包:
點擊上傳:
可以發現我們已經上傳成功!
我們嘗試訪問:http://192.168.0.132:8080/bmjoker/bmjoker.jsp
成功訪問我們上傳的jsp大馬!
這只是一種拿shell的方法,下面我用msfconsole來getshell,當然首先要選對模塊 :exploit/multi/http/tomcat_mgr_upload
這里發現已經可以成功反彈shell,嘗試用msfvenom來作一個后門
復制下面的木馬,在靶機里面寫成.sh文件格式,畢竟.sh是linux的可執行文件
執行,並在本機開啟端口監聽:
可以看到shell已經反彈成功
修復方案:
1、在系統上以低權限運行Tomcat應用程序。創建一個專門的 Tomcat服務用戶,該用戶只能擁有一組最小權限(例如不允許遠程登錄)。
2、增加對於本地和基於證書的身份驗證,部署賬戶鎖定機制(對於集中式認證,目錄服務也要做相應配置)。在CATALINA_HOME/conf/web.xml文件設置鎖定機制和時間超時限制。
3、以及針對manager-gui/manager-status/manager-script等目錄頁面設置最小權限訪問限制。