Apache ActiveMQ 未授权访问漏洞 - CVE-2021-26117
简介
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 | ActiveMQ/bin/ActiveMQ.bat |
访问
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 | MOVE /fileserver/1.txt |
防御措施
- 将 Apache ActiveMQ 升级为最新版本
- 禁止在 LDAP 配置中使用匿名绑定