漏洞介绍

漏洞名称为:Tomcat7&弱口令&后台getshell漏洞

漏洞环境:Apache Tomcat/8.0.43

漏洞利用:Tomcat支持在后台部署war文件,可以直接将webshell部署到web目录下,但是,在tomcat中需要用户拥有一些权限才可以部署war包到web目录下,下面会详细介绍;

漏洞限制:正常安装的情况下,tomcat8中默认没有任何用户,且manager页面只允许本地IP访问。所以只有管理员手工修改了这些属性的情况下,才可以进行攻击。

Tomcat7权限

manager(后台管理)

  • manager-gui 拥有html页面权限
  • manager-status 拥有查看status的权限
  • manager-script 拥有text接口的权限,和status权限
  • manager-jmx 拥有jmx权限,和status权限

host-manager(虚拟主机管理)

  • admin-gui 拥有html页面权限
  • admin-script 拥有text接口权限

关于这些权限的作用,可以阅读tomcat官方文档:http://tomcat.apache.org/tomcat-8.5-doc/manager-howto.html

tomcat-users.xml文件中可以去配置用户的权限

<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">

    <role rolename="manager-gui"/>
    <role rolename="manager-script"/>
    <role rolename="manager-jmx"/>
    <role rolename="manager-status"/>
    <role rolename="admin-gui"/>
    <role rolename="admin-script"/>
    <user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script" />
    
</tomcat-users>

可见,用户tomcat拥有上述所有权限,密码是tomcat

正常安装的情况下,tomcat8中默认没有任何用户,且manager页面只允许本地IP访问。只有管理员手工修改了这些属性的情况下,才可以进行攻击。

漏洞复现

启动环境

docker-compose up -d

环境启动成功后,输入http://your-ip:8080即可看到tomcat界面

弱口令

直接字典爆破就爆出来了,我就不演示了;进入tomcat后台管理界面http://your-ip:8080/manager/html

用户名:tomcat
密码:tomcat

文件上传getshell

tomcat后台管理界面,翻到最下面即可看到war包上传按钮

上传包含jsp马的war包,冰蝎连接即可getshell;我的war包名字为shell.war

可以看到这里多了一条/shell的路径,我们的马就在这条路径下面,为

http://192.168.157.128:8080/shell/shell.jsp

修复建议

1、在系统上以低权限运行Tomcat应用程序。创建一个专门的 Tomcat服务用户,该用户只能拥有一组最小权限(例如不允许远程登录)。

2、增加对于本地和基于证书的身份验证,部署账户锁定机制(对于集中式认证,目录服务也要做相应配置)。在CATALINA_HOME/conf/web.xml文件设置锁定机制和时间超时限制。

3、以及针对manager-gui/manager-status/manager-script等目录页面设置最小权限访问限制。