简介

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 全版本

环境复现

下载地址: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端口)

Apache ActiveMQ 在默认情况下,未做安全配置,没有登录验证,导致可以未授权访问

存在弱口令账号密码 admin/admin

漏洞利用

通过未授权或者弱口令admin/admin登录Apache ActiveMQ

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. 修改conf/jetty.xml文件,bean idsecurityConstraint下的authenticate修改值为true,重启服务即可
  2. 修改conf/jetty.xml文件,bean idsecurityLoginService下的conf值获取用户properties,修改用户名密码,重启服务即可