今天继续给大家介绍渗透测试相关知识,本文主要内容是CVE-2017-12615 Tomcat PUT方法任意写文件漏洞复现。
免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!
一、漏洞简介与环境搭建
CVE-2017-12615是Apache官方于2017年确定的一个高危漏洞。利用该漏洞,攻击者可以以PUT的方式上传任意代码的JSP文件,上传的JSP文件能够作为代码脚本从而在服务器中执行。
该漏洞的影响范围是 Apache Tomcat 7.0.0-7.0.79(7.0.81修复不完全)
并且要求Tomcat配置了写权限,即在Tomcat的配置文件(conf/web/xml)中,将readonly设置为false。
我们可以使用Vulhub来搭建该漏洞,进入/vulhub-master/tomcat/CVE-2017-12615/目录后,执行命令:
docker-compose up -d
这样就可以下载并运行漏洞环境了,命令执行结果如下所示:
之后,我们执行命令:
docker-compose config
可以查看该漏洞的配置,结果如下所示:
从上图可以看出,漏洞环境开放了8080端口的映射,我们访问该端口,结果如下所示:
我们可以进入该漏洞环境中,查看Tomcat的配置文件,可以得知readonly设置为了false,如下所示:
从上图可以看出,readonly选项设置为了false,符合漏洞利用条件。
二、漏洞复现实战
接下来,我们就实际复现CVE-2017-12615 Tomcat PUT方法任意写文件漏洞。
我们使用浏览器访问该漏洞环境,并抓取数据包,然后将数据包发送的BurpSuite的Repeater模块,如下所示:
之后,我们将该数据包修改为PUT形式的数据包。修改方法是:首先将GET方法修改为PUT方法,然后后面一个空格以后跟一个PUT方式上传的文件名。注意,在这里Tomcat有对文件名基本的校验,因此我们直接上传XXX.jsp文件是不行的,但是我们可以绕过这个校验。如果漏洞处于Windows操作系统,那么我们可以设置文件名为XXX.jsp::$DATA,如果漏洞处于Linux操作系统,那么我们可以设置文件名为XXX.jsp/,这样由于操作系统的特性,上传文件后面的干扰内容就会被去掉,重新恢复成.jsp文件。最后,我们还要在数据包的最后面粘贴上JSP代码。修改完成后的数据包如下所示:
从上图可以看出,发送如上修改后的数据包后,响应数据为201,这可以说明我们上传数据包成功,我们也可以进入docker容器内部,发现成功上传了test.jsp文件,并且该文件最后的/被去掉了,结果如下所示:
此时,我们就可以使用蚁剑连接,来验证我们的想法了,结果如下所示:
从上图中可以看出,CVE-2017-12615 Tomcat PUT方法任意写文件漏洞复现成功!
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200