①漏洞介紹
默認安裝Tomcat自帶啟用了管理后台功能,該后台可直接上傳war對站點進行部署和管理,通常由於運維人員的疏忽,導致管理后台空口令或者弱口令的產生,使得黑客或者不法分子利用,該漏洞直接上傳WEBSHELL導致服務器淪陷。
②漏洞常見場景
使用了Apache tomcat,並且開啟了 manager/html
用戶權限的網站。
Tomcat5默認啟用用戶,但非管理員權限,沒有爆破限制。
Tomcat6默認不啟用用戶,6.0.47及后面的版本默認密碼更改為"
並且存在爆破限制。
③漏洞產生原理
因為配置不當被攻擊者利用進入后台部署項目(war包,該功能是正常功能)獲取到網站權限。
④漏洞靶機搭建
1、Tomcat下載地址
https://tomcat.apache.org/download-90.cgi
https://tomcat.apache.org/download-80.cgi
https://tomcat.apache.org/download-70.cgi
https://archive.apache.org/dist/tomcat/tomcat-9/
https://archive.apache.org/dist/tomcat/tomcat-8/
https://archive.apache.org/dist/tomcat/tomcat-7/
2、下載Tomcat
3、修改\conf\tomcat-users.xml
<!--
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="rolel" password="tomcat" roles="role1"/>
-->
改為:
<!--
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
-->
<role rolename="tomcat"/>
<user username="root" password="root" roles="tomcat,manager"/>
4、配置完成后,啟動tomcat
訪問 http://www.site.com/manager/html
進行登錄。
漏洞影響版本
弱口令登錄爆破:Apache Tomcat5.0.0.M1 to 6.0.45
Getshell:Apache Tomcat All Version
漏洞修復版本
弱口令登錄爆破:Apache Tomcat > 6.0.45
漏洞利用方式
弱口令:使用爆破工具對http://www.site.com/manager/html進行爆破或者手工嘗試。





Getshell:
a.生成war包:"C:\Program Files\Java\jdk1.8.0_161\bin\jar.exe" -cvfindex.war *
b.登錄manager/html,上傳war包
漏洞利用工具:
burpsuite模塊:Intruder模塊(Payload type:Custom iterator)
burpsuite插件:https://github.com/WallbreakerTeam/TomcatBrute
metasploit : auxiliary/scanner/http/tomcat_mgr_login
漏洞防御方法
1、注釋掉 \conf\tomcat-users.xml
用戶部分;
2、刪掉非必要的 webapps
;
3、限制IP登錄,修改 apache-tomcat-path\conf\Catalina\localhost\manager.xml
:
<Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1|:1|0:0:0:0:0:0:0:1localhost"/>
</Context>