作者:知道创宇404实验室1. 背景概述ActiveMQ 是 Apache 软件基金会下的一个开源消息驱动中间件软件。Jetty 是一个开源的 servlet 容器,它为基于 Java 的 web 容…
作者:
知道创宇404实验室
背景概述
ActiveMQ是Apache Software Foundation下的一个开源消息驱动的中间件软件。 Jetty是一个开源servlet容器,为基于Java的Web容器(如JSP和servlet)提供运行时环境。 ActiveMQ 5.0及更高版本默认集成了jetty。提供启动后监视ActiveMQ的Web应用程序。
2016年4月14日,外国安全研究员Simon Zuckerbraun将Apache ActiveMQ Fileserver暴露给多个安全漏洞,这些漏洞可能允许远程攻击者用恶意代码替换Web应用程序并在受影响的系统上执行远程代码(CVE-2016-3088)。
2.原理分析
ActiveMQ中的FileServer服务允许用户通过HTTP PUT方法将文件上载到指定的目录。下载ActiveMQ 5.7.0源代码。您可以看到后台处理PUT的关键代码如下:

用户可以将文件上传到指定目录,该目录在conf/jetty.xml中定义如下

有趣的是,我们伪造了一个可以弹出绝对路径的特殊上传路径。

按照PUT方法进行跟踪,可以看到调用以下函数。

同时,后台处理MOVE的密钥代码如下。可以看出,该方法不对目标路径施加任何限制或过滤。

因此,我们可以构造一个PUT请求,将webshell上传到fileserver目录,然后通过Move方法将其移动到具有执行权限的admin /目录。
3.攻击的多重姿势
根据上述漏洞原则,我们可以想到各种利用姿势。
(注意:以下结果在ActiveMQ 5.7.0中重现。在重复过程中,MOVE方法非常不稳定。)
上传Webshell模式
首先将Jsp Webshell放到fileserver目录中

Webshell在fileserver /目录中没有执行权限

爆炸绝对路径

然后使用MOVE方法将Webshell移动到admin /目录中(您也可以使用相对路径)

访问http://localhost: 8161/admin/1.jsp?cmd=ls,命令执行成功,效果如下

上传SSH公钥
由于您可以上传和移动任何文件,因此上传我们的ssh公钥以通过SSH登录是很自然的。
首先生成密钥对。 (如果已经存在,则不需要)

然后上传,移至/root/.ssh/并将其重命名为authorized_keys

之后,您可以直接登录ssh。

4.漏洞影响
漏洞影响版本:Apache ActiveMQ 5.x~5.14.0
在ZoomEye上使用日期和ActiveMQ作为关键字,我们检测到2015年1月1日(爆发前一年)和2017年1月1日(爆发后一年)互联网上的ActiveMQ总量。如下。

可以看出,在漏洞爆发之前和之后,ActiveMQ的数量已大大减少。由此我们可以粗略地猜测,许多ActiveMQ Web服务限制了爆发后公共网络的访问。
5.脆弱性保护计划
1.在5.14.0及更高版本中已删除ActiveMQ Fileserver的功能。建议用户升级到5.14.0及更高版本。
2.通过从conf \ jetty.xml中删除以下配置来禁用ActiveMQ Fileserver功能

6.参考链接
[1]http://activemq.apache.org/security-advisories.data/CVE-2016-3088-announcement.txt
[2]https://www.seebug.org/vuldb/ssvid-96268
[原文地址:https://paper.seebug.org/346/ 作者:
知道创宇404实验室 ]