【CVE-2017-12615】 Tomcat任意文件上传漏洞

首先先贴出wooyun上的一个案例:http://wooyun.jozxing.cc/static/bugs/wooyun-2015-0107097.html

看到这个漏洞让我想到了IIS6.0任意文件上传的漏洞,不过现在大多都用工具,比如IIS put scan...

这里贴出IIS6.0任意文件上传案例:https://blog.csdn.net/qq_42357070/article/details/82183988

能文件上传,大多都是权限过滤不严....

漏洞分析:

我们来分析tomcat这个漏洞,需要首先允许tomcat进行PUT操作,问题也就在 /conf/web.xml:

<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

重点是readonly的那一项,因为其他的都是默认的,只有那个是自己添加的。

我们来看一下readonly这个选项是用来做什么的吧:

也是在这个web.xml文件中,已经注释的地方说明了默认情况下readonly是true,并且如果

是true的话,那么PUT和DELETE方法是被拒绝的,因此如果手动将readonly选项开启为false,

那么就能够通过PUT方法上传文件了。

漏洞复现:

我们开启tomcat漏洞环境,本次还是使用docker来搭建环境,开启环境:

使用burpsuite抓包,发送构造的的webshell:

当我们发送上图构造好的jsp马时发现爆出405错误,当我们重新构造:

PUT /joker.jsp  与  PUT /joker.jsp/ 一个成功一个失败

查阅资料发现,原来default servlet只能处理静态文件,而处理jsp文件是jspservlet,但是只有defaultservlet

有PUT上传逻辑,解决的办法是通过构造特殊的后缀名来进行绕过,从而上传jsp木马。

经过验证,可以在文件名后面添加斜杠 / 或者 %20来进行绕过,应为在windows下,%20(空格)和 / 都是不合法文件名。都会被去掉

我们尝试访问上传上去的jsp马:

可以看到木马被正常访问!

为了方便。一般情况下我们直接使用EXP快速利用。在这里贴上Bearcat师傅的CVE-2017-12615的EXP下载地址:

https://github.com/iBearcat/CVE-2017-12615

修复方案:

1、配置readonly和VirtualDirContext值为True或注释参数,禁止使用PUT方法并重启tomcat

注意:如果禁用PUT方法,对于依赖PUT方法的应用,可能导致业务失效。

2、根据官方补丁升级最新版本

17.[CVE-2017-12615]Tomcat任意文件上传漏洞的更多相关文章

  1. Tomcat任意文件上传漏洞CVE-2017-12615

    文章来源:https://blog.csdn.net/qq1124794084/article/details/78044756 漏洞影响的tomcat版本为tomcat7.0.0-7.0.81版本 ...

  2. WordPress Contact Form 7插件任意文件上传漏洞

    漏洞名称: WordPress Contact Form 7插件任意文件上传漏洞 CNNVD编号: CNNVD-201311-415 发布时间: 2013-11-28 更新时间: 2013-11-28 ...

  3. WordPress Suco Themes ‘themify-ajax.php’任意文件上传漏洞

    漏洞名称: WordPress Suco Themes ‘themify-ajax.php’任意文件上传漏洞 CNNVD编号: CNNVD-201311-403 发布时间: 2013-11-28 更新 ...

  4. WordPress Kernel Theme ‘upload-handler.php’任意文件上传漏洞

    漏洞名称: WordPress Kernel Theme ‘upload-handler.php’任意文件上传漏洞 CNNVD编号: CNNVD-201311-127 发布时间: 2013-11-12 ...

  5. WordPress Think Responsive Themes ‘upload_settings_image.php’任意文件上传漏洞

    漏洞名称: WordPress Think Responsive Themes ‘upload_settings_image.php’任意文件上传漏洞 CNNVD编号: CNNVD-201311-06 ...

  6. WordPress Checkout插件跨站脚本漏洞和任意文件上传漏洞

    漏洞名称: WordPress Checkout插件跨站脚本漏洞和任意文件上传漏洞 CNNVD编号: CNNVD-201311-015 发布时间: 2013-11-04 更新时间: 2013-11-0 ...

  7. WordPress Lazy SEO插件lazyseo.php脚本任意文件上传漏洞

    漏洞名称: WordPress Lazy SEO插件lazyseo.php脚本任意文件上传漏洞 CNNVD编号: CNNVD-201309-446 发布时间: 2013-09-26 更新时间: 201 ...

  8. WordPress Complete Gallery Manager插件‘upload-images.php’任意文件上传漏洞

    漏洞名称: WordPress Complete Gallery Manager插件‘upload-images.php’任意文件上传漏洞 CNNVD编号: CNNVD-201309-377 发布时间 ...

  9. WordPress NextGEN Gallery ‘upload.php’任意文件上传漏洞

    漏洞名称: WordPress NextGEN Gallery ‘upload.php’任意文件上传漏洞 CNNVD编号: CNNVD-201306-259 发布时间: 2013-06-20 更新时间 ...

随机推荐

  1. CSS3登录表单动画

    在线演示 本地下载

  2. Spring Cloud之Hystrix雪崩效应解决方案

    基于Hystris解决雪崩效应: 1.服务降级:    防止用户一直等待,使用降级方式,调用FallBack(返回友好提示,不会去处理请求) 案例: 当前请求人数过多,请稍后重试 2.服务熔断:(和服 ...

  3. AIM Tech Round 3 (Div. 2) A , B , C

    A. Juicer time limit per test 1 second memory limit per test 256 megabytes input standard input outp ...

  4. Linux虚拟机桥接网络

    1.虚拟机网络设置为“桥接” 2.查看本机IP.Gateway.DNS 3.vi /etc/sysconfig/network-scripts/ifcfg-eth0,ONBOOT=“NO”改为“YES ...

  5. C++(八)— 死锁原因及解决方法

    1.死锁原因 死锁问题被认为是线程/进程间切换消耗系统性能的一种极端情况.在死锁时,线程/进程间相互等待资源,而又不释放自身的资源,导致无穷无尽的等待,其结果是任务永远无法执行完成. 打个比方,假设有 ...

  6. 关于float与double区别

    Problem A: 啤酒和饮料 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 175  Solved: 29 [Submit][Status][We ...

  7. linux-常用指令3

    系统管理命令 stat              显示指定文件的详细信息,比ls更详细 who               显示在线登陆用户 whoami          显示当前操作用户 host ...

  8. Uva 10820 Send a Table(欧拉函数)

    对每个n,答案就是(phi[2]+phi[3]+...+phi[n])*2+1,简单的欧拉函数应用. #include<iostream> #include<cstdio> # ...

  9. cudnn 卷积例子

    运行环境:linux cuda cudnn cudnn API:https://docs.nvidia.com/deeplearning/sdk/cudnn-developer-guide/index ...

  10. ffmpeg命令选项解释

    ffmpeg作为媒体文件处理软件,基本用法如下: ffmpeg -i INPUTfile [OPTIONS] OUTPUTfile 输入输出文件通常就是待处理的多媒体文件了.可以是纯粹的音频文件,纯粹 ...