漏洞成因
Tomcat支持在后台部署war文件,可以直接将webshell部署到web目录下 但是需要有权限
Tomcat7+权限分为:
就是路径是manager/status ....
- manager(后台管理)
-
- manager-gui 拥有html页面权限
- manager-status 拥有查看status的权限
- manager-script 拥有text接口的权限,和status权限
- manager-jmx 拥有jmx权限,和status权限
- host-manager(虚拟主机管理)
-
- admin-gui 拥有html页面权限
- admin-script 拥有text接口权限
用户tomcat拥有上述所有权限,密码为tomcat 并且是弱口令
<?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版本:8.0
在manager/html中 需要使用用户名和密码进行登录
尝试抓包使用暴力破解
通过抓包分析 发现这个authorization字段中的字符串是个base编码 应该就是输入的用户名和密码
base64解码是 确定是这样
对他进行暴力破解
在intruder模块 添加爆破点
因为这个paload的格式是用户名:密码
所以选择这个custom iterator(自定义迭代器)
把payload分成三部分
1 用户名
也可以添加字典 这里只是演示过程
2 :号
3 密码
最后他是base64加密所以也需要把payload进行加密
并且不需要url 编码
执行
发现一个状态为200(表示HTTP请求已成功处理的状态码)
base解码
登录成功
发现里面有个文件上传 是上传war格式的文件
问题:上传war文件后为什么可以解压成jsp文件被蚁剑连接?
因为上传war包后,会自动解压到网站根目录下/shell/shell.jsp(网站根目录/war包名称/后门名称)
先写一个jsp一句话木马
压缩成zip后再修改后缀成war
上传完后发现这里多了个shell 访问该路径下的shell.jsp
使用蚁剑连接 直接拿下
验证一下是否是正确的shell
sudo docker exec -ti id /bin/bash
允许你以交互方式连接到容器并执行命令
(如果你只需要一个通用的、兼容性更好的shell,那么使用/bin/sh 是一个更安全的选择,因为它在几乎所有Unix-like系统上都可用。但如果你需要更多的功能和特性,或者编写交互式脚本,那么选择/bin/bash 可能更合适)