Tomcat 远程代码执行漏洞分析(CVE-2017-12615)

本文深入分析了Apache Tomcat的CVE-2017-12615漏洞,当readonly参数设置为false时,攻击者可上传恶意JSP文件执行任意代码。该漏洞影响7.0.0到7.0.81版本。修复方案包括升级到Tomcat 8及以上版本或设置readonly为true。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Tomcat

1. 漏洞描述

  • 漏洞简述: 当tomcat启用了HTTP PUT请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 文件,JSP文件中的恶意代码将能被服务器执行。导致服务器上的数据泄露或获取服务器权限。
  • CVE编号:CVE-2017-12615
  • 影响版本:Apache Tomcat 7.0.0-Apache Tomcat 7.0.81

2. 漏洞简介

??2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,该漏洞受影响版本为7.0-7.81之间,官方评级为高危,在一定条件下,攻击者可以利用这两个漏洞,获取用户服务器上 JSP 文件的源代码,或是通过精心构造的攻击请求,向用户服务器上传恶意JSP文件,通过上传的 JSP 文件 ,可在用户服务器上执行任意代码,从而导致数据泄露或获取服务器权限,存在高安全风险。

3. 漏洞分析

注: 漏洞触发条件

? CVE-2017-12615漏洞利用需要将 readonly 初始化参数由默认值设置为 false,经过实际测试,Tomcat 7.x版本内web.xml配置文件内默认配置无readonly参数,需要手工添加,默认配置条件下不受此漏洞影响。

? Apache Tomcat默认开启PUT方法,org.apache.catalina.servlets.DefaultServlet的readonly默认为true,而且默认没有在conf/web.xml里写,需要手工添加并且改为false,才可以测试。

? 主要在conf文件夹的web.xml文件中添加readonly参数并设置值为false:

<init-param>
    <param-name>readonly</param-name>
    <param-value>false</param-value>
</init-param>

3.1 漏洞原理分析

? 设置好web.xml文件中的参数,重启tomcat。创建一个简单的JAVA Web工程,通过该tomcat进行发布,用eclipse在tomcat源码中设置断点进行debug调试。

? 在浏览器中访问工程,通过burpsuite进行抓包,构造恶意payload进行攻击:

Tomcat

? 点击go进行数据包转发,在eclipse中设置断点,可以看到首先进入HttpServlet.java文件的doput方法。

<!-- The mapping for the default servlet -->
<servlet-mapping>
    <servlet-name>default</servlet-
### Apache Tomcat CVE-2025-24813 远程代码执行漏洞复现 #### 漏洞概述 Apache Tomcat远程代码执行漏洞 (CVE-2025-24813) 存在于特定版本中,当满足某些条件时,攻击者可以利用该漏洞实现未授权的恶意代码执行并获取服务器权限。此漏洞的影响范围较广,涉及多个主要版本[^1]。 #### 影响版本 受影响的 Tomcat 版本如下: - `9.0.0.M1` ≤ Tomcat ≤ `9.0.98` - `10.1.0-M1` ≤ Tomcat ≤ `10.1.34` - `11.0.0-M1` ≤ Tomcat ≤ `11.0.2` 这些版本中的默认会话持久化机制和存储位置设置可能引入安全隐患[^3]。 #### 漏洞利用条件 要成功触发此漏洞,需满足以下条件: 1. **Servlet 写入功能启用**:Tomcat 应用程序启用了 servlet 文件写入功能(通常默认禁用)。 2. **默认会话管理器配置**:使用了 Tomcat 默认的会话持久化机制及其默认存储路径。 3. **依赖库存在反序列化漏洞**:如果应用环境中使用的第三方库存在可被利用的反序列化链,则可能导致进一步的安全威胁。 上述条件共同作用下,攻击者可以通过精心构造的数据包,在目标系统的指定目录下创建文件或执行命令。 #### 环境准备 为了验证漏洞是否存在以及其具体表现形式,需要搭建测试环境。以下是详细的环境配置说明: ##### 软件安装与部署 1. 下载并解压对应版本的 Apache Tomcat 安装包至本地机器上。 - 受影响版本列表见前文描述。 2. 修改 `conf/web.xml` 配置文件以允许 Servlet 功能扩展。例如,添加支持动态资源加载的相关参数: ```xml <init-param> <param-name>listings</param-name> <param-value>true</param-value> </init-param> ``` 3. 启动服务端口监听,默认为 8080 或其他自定义端口号。 ##### 测试工具选用 推荐采用 Burp Suite Pro 或 Metasploit Framework 对目标主机发起模拟攻击请求;也可以编写简单的 Python/Java 脚本来完成基本的功能检测。 #### 实际操作流程 按照以下顺序依次尝试重现问题现象: 1. 构造 HTTP 请求数据包发送给目标站点 `/manager/html/upload?file=` 接口地址; 2. 如果返回状态码正常且无错误提示信息则表明上传过程顺利完成; 3. 查看工作区目录结构变化情况确认是否有新生成的目标文件对象位于预期路径之下 (`apache-tomcat-\work\Catalina\localhost\ROOT`) [^2]. 注意:以上仅为理论分析指导用途,请勿非法入侵任何网络资产! --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值