简介

ActiveMQ 是 Apache 研发的开源消息服务器,它支持Java消息服务、集群、Spring Framework等。

ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现

随着中间件的启动,会打开两个端口,61616是工作端口,消息在这个端口进行传递;8161是Web管理页面端口

ActiveMQ的web控制台分三个应用,admin、api和fileserver

其中admin是管理员页面,api是接口,fileserver是储存文件的接口。

admin和api都需要登录后才能访问,fileserver无需登录

漏洞原理

默认情况下,ActiveMQ服务是没有配置安全参数。恶意人员可以利用默认配置弱点发动远程命令执行攻击,获取服务器权限,从而导致数据泄露

影响版本

  • Apache ActiveMQ Artemis < 2.16.0
  • Apache ActiveMQ < 5.16.1
  • Apache ActiveMQ < 5.15.14

环境复现

下载地址:http://activemq.apache.org/components/classic/download/

解压文件夹

启动

1
2
3
4
ActiveMQ/bin/ActiveMQ.bat

cd ActiveMQ/bin/
./ActiveMQ start

访问

1
http://127.0.0.1:8161/admin/

漏洞特征

端口:61616(工作端口),8161(Web端口)

ActiveMQ LDAP登录模块可被配置为使用匿名访问。在这种情况下,远程攻击者在只提供有效的用户名时,无需提供密码,可造成LDAP未授权访问

漏洞利用

遍历用户名,通过匿名访问的方式登录

ActiveMQ默认开启PUT请求,当开启PUT时,访问不存在的目录,Response会返回相应的物理路径信息

如果存在未授权或默认口令,以下页面同样可以获取到物理路径

1
http://127.0.0.1:8161/admin/test/systemProperties.jsp

在 ActiveMQ 5.12.x~5.13.x 版本中,默认关闭 fileserver 目录,可以在conf/jetty.xml中开启;

在5.14.0版本以后,彻底删除了fileserver应用

若服务器存在 fileserver 目录,则可以通过 PUT 请求写入文件

返回204说明上传成功,返回404或者500说明上传失败

但 fileserver 下的文件默认不解析,通过MOVE方法请求移动文件

把文件移动到可以被解析的admin/下或者api/

1
2
MOVE /fileserver/1.txt HTTP/1.1
Destination: file:///opt/activemq/webapps/admin/shell.jsp

防御措施

  1. 将 Apache ActiveMQ 升级为最新版本
  2. 禁止在 LDAP 配置中使用匿名绑定