您的位置:首页 > 运维架构 > Tomcat

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

2019-01-20 11:06 281 查看
版权声明:看不尽的尘埃版权所有,转载请注明出处 https://blog.csdn.net/weixin_42936566/article/details/86560019

前言

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

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

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

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

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

 

漏洞原理

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

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

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

会调用resources.bind:

dirContext 为FileDirContext:

调用 rebind创建文件:

又由于 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

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

 

然后PUT写入JSP后门代码,再GET请求ma.jsp,返回正常200,后门应该是被执行了,通过浏览器访问一下

 

于是去根目录找KEY文件

 

最终获取到了Flag

 

 

 

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: