(ActiveMQ)
ActiveMQ 简介
Apache ActiveMQ是Apache软件基金会所研发的开放源码消息中间件;由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。
漏洞描述
漏洞位置位于ActiveMQ中的FileServer服务中,允许通过PUT请求方法写入任意文件,但不进行解析,并附带着支持MOVE请求方法,同时可以构建特殊路径来爆出根路径。
ActiveMQ的分为三个应用,分别为api、admin、fileserver,api以及admin都是需要用登陆才可使用,fileserver无需登陆,在有些对外开放的ActiveMQ在通过MOVE请求方法转移时需要进行登陆,获取登陆会话。ActiveMQ存在着默认的用户密码:admin/admin。
漏洞原理分析
源码下载地址
http://archive.apache.org/dist/activemq/apache-activemq/5.7.0/activemq-parent-5.7.0-source-release.zip
查看源码找到RestFilter.java文件,允许PUT请求上传文件。并且没有对身份进行验证。
PUT方法调用locateFile方法,上传到${activemq.home}/webapps/fileserver 下,如图:
接下来看对MOVE请求的方法,没有做任何的限制过滤,不是null即可。
漏洞复现
注意问题:
上传普通文件没问题,无需身份认证,但是上传.jsp时响应401状态码。这个时候只需要添加一个字段,进行一下身份认证即可。或者直接将sell文件先写成.txt后缀的文件,先进行上传,等到使用MOVE请求方法时候在改成.jsp后缀的但是转移文件时还是需要该字段进行身份的认证。
Authorization: Basic YWRtaW46YWRtaW4=
因为默认用户名密码,admin/admin 抓个包就可获取。
上传成功。
注意问题:
上面我们提到过写一些奇怪的路径会爆出绝对路径,也有某些站点是无法爆出的。可访问http://ip:8161/admin/test/systemProperties.jsp,可以找到activemq.home路径。
如图:
无法回显目录,可访问/admin/test/systemProperties.jsp。
构造特殊上传路径可以爆出来绝对路径的。
由于我这里是使用docker搭建的只是做复现,就不需要考虑问题现象二的情况了,就直接复现漏洞。
MOVE请求方方式,将上传的shell转移到admin下对木马进行解析。
访问一下。
执行命令成功。
影响版本
Apache ActiveMQ 5.0.0-5.13.x
修复建议
及时更新版本,更新至5.1及其以后的版本。
移除 conf/jetty.xml 的以下配置来禁用 ActiveMQ Fileserver 功能。
免责声明:本站提供安全工具、程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!
转载声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。