一、漏洞描述
Tomcat 支持通过后端部署war 文件,所以我们可以直接将webshell 放到web 目录中。为了访问后端,需要权限。
Tomcat7+的权限如下:
经理(后台管理)
manager-gui(html页面权限)
manager-status(查看状态的权限)
manager-script(文本界面权限和状态权限)
manager-jmx(jmx 权限和状态权限)
主机管理器(虚拟主机管理)
admin-gui(html 页面权限)
admin-script(文本界面权限)
可以看出,用户tomcat拥有上述所有权限,密码为tomcat。
正常安装Tomcat8默认没有用户,管理页面只允许本地IP访问。只有管理员手动修改了这些属性,我们才能进行攻击。修改后则需要爆破才能登录。
【漏洞利用】:通过默认的弱密码,可后台部署WAR包,上传shell。
用户权限在conf/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>
自身数据源配置在conf/context.xml文件中配置:
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource name="jdbc/u3" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="123456" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.109:3306/sgk?autoReconnect=true"/>
</Context>
jdbc:mysql://192.168.0.109:3306/sgk?autoReconnect=true
jdbc:数据库://数据库的IP:端口/当前库名?autoReconnect=true
二、测试环境
角色 | IP |
---|---|
目标靶机 | 192.200.30.72 |
#进入漏洞环境目录
cd /opt/vulhub-master/tomcat/tomcat8
#启用漏洞环境
docker-compose up -d
1).docker环境启用,查看容器环境运行正常。
2).访问http://192.200.30.72:8080/manager/html,打开Tomcat后台管理页面。
三、漏洞复现
1.通过弱密码tomcat:tomcat登录进后台页面。http://192.200.30.72:8080/manager/html
2.将一个冰蝎jsp马添加到压缩包中,更改压缩后缀为.war,完成后上传。
3.文件上传成功。
4.访问shell.jsp,访问成功。
5.通过冰蝎连接成功,命令执行成功。