Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析

Posted Seebug漏洞平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析相关的知识,希望对你有一定的参考价值。


01  背 景 概 述


ActiveMQ 是 Apache 软件基金会下的一个开源消息驱动中间件软件。Jetty 是一个开源的 servlet 容器,它为基于 Java 的 web 容器,例如 JSP 和 servlet 提供运行环境。ActiveMQ 5.0 及以后版本默认集成了jetty。在启动后提供一个监控 ActiveMQ 的 Web 应用。


2016年4月14日,国外安全研究人员 Simon Zuckerbraun 曝光 Apache ActiveMQ Fileserver 存在多个安全漏洞,可使远程攻击者用恶意代码替代 Web 应用,在受影响系统上执行远程代码(CVE-2016-3088)。



02  原 理 分 析


ActiveMQ 中的 FileServer 服务允许用户通过 HTTP PUT 方法上传文件到指定目录,下载 ActiveMQ 5.7.0 源码(http://archive.apache.org/dist/activemq/apache-activemq/5.7.0/activemq-parent-5.7.0-source-release.zip) ,可以看到后台处理 PUT 的关键代码如下


Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析


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


Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析


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


Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析


顺着 PUT 方法追踪,可以看到调用了如下函数


Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析


同时看到后台处理 MOVE 的关键代码如下,可以看到该方法没有对目的路径做任何限制或者过滤。


Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析


由此,我们可以构造PUT请求上传 webshell 到  fileserver  目录,然后通过 Move 方法将其移动到有执行权限的  admin/  目录。



03  漏洞利用的多种姿势


根据以上漏洞原理,我们可以想到多种利用姿势。


(注:以下结果均在 ActiveMQ 5.7.0 中复现,复现过程中出现了 MOVE 方法利用很不稳定的情况。)


上传 Webshell 方式


首先 PUT 一个 Jsp 的 Webshell 到  fileserver  目录


Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析


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


Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析


爆一下绝对路径


Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析


然后利用 MOVE 方法将 Webshell 移入  admin/  目录(也可以利用相对路径)


Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析


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


Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析


上传 SSH 公钥方式


既然可以任意文件上传和移动,很自然的可以想到上传我们的 ssh 公钥,从而实现 SSH 方式登录。


首先生成密钥对。(如果已存在则不需要)


Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析


然后上传、移动到  /root/.ssh/  并重命名为  authorized_keys 


Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析

Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析


之后直接 ssh 登录即可。


Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析



04  漏 洞 影 响


漏洞影响版本:Apache ActiveMQ 5.x ~ 5.14.0


在 ZoomEye 上用 日期 和 ActiveMQ 作为关键词检索,分别探测了2015年1月1日(漏洞爆发前一年)和2017年1月1日(漏洞爆发后一年)互联网上 ActiveMQ 的总量情况,如下。


Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析

Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析


可以看到,ActiveMQ 的数量在漏洞爆发前后有很大幅度的减少,从这我们大致可以猜测漏洞爆发后很多 ActiveMQ 的 Web 服务限制了来自公网的访问。



05  漏洞防护方案


1、ActiveMQ Fileserver 的功能在 5.14.0 及其以后的版本中已被移除。建议用户升级至 5.14.0 及其以后版本。


2、通过移除  conf\jetty.xml  的以下配置来禁用 ActiveMQ Fileserver 功能


Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析



以上是关于Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析的主要内容,如果未能解决你的问题,请参考以下文章

Apache ActiveMQ Fileserver远程代码执行漏洞

Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析

Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)复现

ActiveMQ反序列化漏洞(CVE-2015-5254)

ActiveMQ反序列化漏洞(CVE-2015-5254)复现

ActiveMQ反序列化漏洞(CVE-2015-5254)复现