tomcat7.x远程命令执行(CVE-2017-12615)漏洞漏洞复现

一、漏洞前言

2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,该漏洞受影响版本为7.0-7.80之间,在一定条件下,攻击者可以利用这两个漏洞,获取用户服务器上 JSP 文件的源代码,或是通过精心构造的攻击请求,向用户服务器上传恶意JSP文件,通过上传的 JSP 文件 ,可在用户服务器上执行任意代码,从而导致数据泄露或获取服务器权限,存在高安全风险

二、漏洞名称

CVE-2017-12615-远程代码执行漏洞

三、危害等级:

高危

四、漏洞描述:

CVE-2017-12616:信息泄露漏洞 
当 Tomcat 中使用了 VirtualDirContext 时,攻击者将能通过发送精心构造的恶意请求,绕过设置的相关安全限制,或是获取到由 VirtualDirContext 提供支持资源的 JSP 源代码。 
CVE-2017-12615:远程代码执行漏洞 
当 Tomcat 运行在 Windows 主机上,且启用了 HTTP PUT 请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求向服务器上传包含任意代码的 JSP
文件。之后,JSP 文件中的代码将能被服务器执行。 
通过以上两个漏洞可在用户服务器上执行任意代码,从而导致数据泄露或获取服务器权限,存在高安全风险。

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

CVE-2017-12616漏洞需要在server.xml文件配置参数,经过实际测试,Tomcat 7.x版本内默认配置无VirtualDirContext参数,需要手工添加,默认配置条件下不受此漏洞影响。

六、漏洞影响范围:

CVE-2017-12616影响范围:Apache
Tomcat 7.0.0 - 7.0.80 
CVE-2017-12615影响范围: Apache Tomcat 7.0.0 - 7.0.7

七、漏洞复现

姿势一:python脚本的复现

CVE-2017-12615漏洞复现:

1.测试环境为tomcat7.0.70

2.需要手动配置web.xml,开启http的put方法:

添加如下配置:

<init-param>

<param-name>readonly</param-name>

<param-value>false</param-value>

</init-param>

3.通过CVE-2017-12615.py即可上传shell:

4.远程即可访问shell:

注意:其利用脚本已上传到我的github中,https://raw.githubusercontent.com/backlion/demo/master/CVE-2017-12615.py

姿势二:利用文件名后缀加::$DATA绕过上传

通过burpsuit抓包,上传拦截get改成PUT方法,然后上传:

姿势三:利用在上传文件名后缀名后加/可绕过上传

姿势四:通过在上传文件后缀名加上%20可绕过

姿势五:通过在上传文件名后缀加上.可绕过上传

八、漏洞修复建议

根据业务评估配置readonly和VirtualDirContext值为Ture或注释参数,临时规避安全风险;

官方已经发布Apache Tomcat 7.0.81 版本修复了两个漏洞,建议升级到最新版本。

最新文章

  1. JAVA基础-输入输出:1.编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上。
  2. Bash Shell字符串操作
  3. 【iCore3 双核心板_FPGA】例程二:GPIO输出实验——点亮三色LED
  4. CXF(2.7.10) - Writing a service with Spring
  5. opener 属性是一个可读可写的属性,可返回对创建该窗口的 Window 对象的引用
  6. java二维码开发
  7. win7 64位 Xsheel
  8. 基于visual Studio2013解决C语言竞赛题之0601判断素数函数
  9. 最多两次股票交易-Best Time to Buy and Sell Stock III
  10. 如何在Oracle中复制表结构和表数据 【转载】
  11. Java 面试宝典-2017
  12. asp.net core系列 56 IS4使用OpenID Connect添加用户认证
  13. 方法总结:如何实现html页面自动刷新
  14. less的写法 calc以及变量
  15. 对象属性的描述:writable、enumerable、configurable
  16. C++拷贝构造函数与 = 重载
  17. selector的小箭头去除
  18. Netty权威指南之Netty入门程序
  19. 使用位图文本工具BMFont从图片生成自定义字体
  20. ASP.NET AJAX web chat application

热门文章

  1. 「Leetcode」975. Odd Even Jump(Java)
  2. Java的安装与配置
  3. Linux☞权限数字表示法
  4. app结合unity3D程序中遇到的问题 MapFileParser unity3d导出到IOS程序下 集成unity3dAR功能
  5. 3.openldap生成LDAP用户
  6. C++ STL 全排列
  7. 欢迎来怼---作业要求 20171015 beta冲刺贡献分分配规则
  8. Linux下查看apache连接数
  9. 【Leetcode】113Path Sum II
  10. PAT 甲级 1050 String Subtraction