Tomcat 漏洞总结

①漏洞介绍

默认安装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>
posted @ 2021-04-06 17:11  rab3it  阅读(1790)  评论(0编辑  收藏  举报