针对Tomcat 远程代码执行漏洞(CVE-2017-12615)的一次实战

前言

今天想多实践实践Tomcat中间件的漏洞。于是乎,把墨者学院的靶场全做了。

下面来看一下对Tomcat 远程代码执行漏洞的一次战斗!

一开始拿到这个靶场时,都不知道该如何入手,于是去百度搜了相关资料。

找到了一篇好文章,写的简单明了!阅读完后,发现要复现和利用还是很简单的。只要一个burp工具就够了!

https://www.freebuf.com/vuls/148283.html

 

漏洞原理

Tomcat 的 Servlet 是在 conf/web.xml 配置的,通过配置文件可知,当后缀名为 .jsp 和 .jspx 的时候,是通过JspServlet处理请求的:

针对Tomcat 远程代码执行漏洞(CVE-2017-12615)的一次实战_第1张图片

而其他的静态文件是通过DefaultServlet处理的:

针对Tomcat 远程代码执行漏洞(CVE-2017-12615)的一次实战_第2张图片

可以得知,“1.jsp ”(末尾有一个和空格)并不能匹配到 JspServlet,而是会交由DefaultServlet去处理。当处理 PUT 请求时:

针对Tomcat 远程代码执行漏洞(CVE-2017-12615)的一次实战_第3张图片

会调用resources.bind:

针对Tomcat 远程代码执行漏洞(CVE-2017-12615)的一次实战_第4张图片

dirContext 为FileDirContext:

针对Tomcat 远程代码执行漏洞(CVE-2017-12615)的一次实战_第5张图片

调用 rebind创建文件:

针对Tomcat 远程代码执行漏洞(CVE-2017-12615)的一次实战_第6张图片

又由于 Windows 不允许“ ”作为文件名结尾,所以会创建一个 .jsp 文件,导致代码执行。

 

影响范围

全部的 Tomcat 版本,从 5.x 到 9.x 。

修复建议

将 conf/web.xml 中对于 DefaultServlet 的 readonly 设置为 true


实战

目标:http://219.153.49.228:46395/

根据FB文章中说到了。可以利用/xx.jsp/通杀windows、Linux平台,也就省去了信息搜集的阶段中搜集目标操作系统的操作了!

先来试试,PUT写入test.jsp

针对Tomcat 远程代码执行漏洞(CVE-2017-12615)的一次实战_第7张图片

再GET请求test.jsp,可以看到回显了hello,说明漏洞存在

针对Tomcat 远程代码执行漏洞(CVE-2017-12615)的一次实战_第8张图片

 

然后PUT写入JSP后门代码,再GET请求ma.jsp,返回正常200,后门应该是被执行了,通过浏览器访问一下针对Tomcat 远程代码执行漏洞(CVE-2017-12615)的一次实战_第9张图片

 

于是去根目录找KEY文件

针对Tomcat 远程代码执行漏洞(CVE-2017-12615)的一次实战_第10张图片

 

最终获取到了Flag

针对Tomcat 远程代码执行漏洞(CVE-2017-12615)的一次实战_第11张图片

 

 

 

 

 

你可能感兴趣的:(安全笔记,Web安全)