①漏洞介绍
默认安装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 omcat-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 FilesJavajdk1.8.0_161injar.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 omcat-users.xml
用户部分;
2、删掉非必要的 webapps
;
3、限制IP登录,修改 apache-tomcat-pathconfCatalinalocalhostmanager.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>