hacktricks/network-services-pentesting/5671-5672-pentesting-amqp.md
2023-08-03 19:12:22 +00:00

10 KiB
Raw Blame History

☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

基本信息

RabbitMQ是一种消息队列软件也被称为_消息代理_或_队列管理器_。简单来说它是一种软件其中定义了队列应用程序连接到这些队列以传输消息。
消息可以包含任何类型的信息。例如,它可以包含关于应该在另一个应用程序上启动的进程或任务的信息(甚至可以在另一台服务器上),或者它可以只是一个简单的文本消息。队列管理器软件将消息存储在队列中,直到接收应用程序连接并将消息从队列中取出。然后,接收应用程序处理该消息。
定义来自这里

默认端口5672,5671

PORT     STATE SERVICE VERSION
5672/tcp open  amqp    RabbitMQ 3.1.5 (0-9)

枚举

手动枚举

AMQP (5671/5672)

AMQP高级消息队列协议是一种用于消息传递的开放标准协议。它通常在端口5671和5672上运行。

端口扫描

使用nmap命令扫描目标主机的5671和5672端口以确定是否开放。

nmap -p 5671,5672 <目标IP>

AMQP枚举

使用amqp-probe工具对AMQP进行枚举以获取有关目标主机上的AMQP服务的详细信息。

amqp-probe -t <目标IP> -p 5672

AMQP爆破

使用amqp-bunny工具对AMQP进行爆破以尝试破解目标主机上的AMQP服务的凭据。

amqp-bunny -t <目标IP> -p 5672 -u <用户名字典> -p <密码字典>

AMQP漏洞利用

根据枚举和爆破的结果使用相应的漏洞利用工具对目标主机上的AMQP服务进行攻击。

参考链接

import amqp
#By default it uses default credentials "guest":"guest"
conn = amqp.connection.Connection(host="<IP>", port=5672, virtual_host="/")
conn.connect()
for k, v in conn.server_properties.items():
print(k, v)

自动化

AMQP (Advanced Message Queuing Protocol) 是一种用于消息传递的开放标准协议。它允许应用程序在分布式系统中进行异步通信并支持高效的消息传递。在渗透测试中我们可以使用自动化工具来发现和利用AMQP服务的漏洞。

AMQP自动化工具

以下是一些常用的AMQP自动化工具

  • RabbitMQ-CLIRabbitMQ-CLI是一个命令行工具用于与RabbitMQ服务器进行交互。它提供了一组命令用于管理队列、交换机和绑定以及发送和接收消息。

  • AMQP-ClientAMQP-Client是一个Python库用于与AMQP服务器进行交互。它提供了一组API用于创建连接、声明队列和交换机以及发送和接收消息。

AMQP漏洞利用

以下是一些常见的AMQP漏洞利用技术

  • 未授权访问某些AMQP服务器可能未正确配置访问控制导致未经授权的用户可以访问和操作队列、交换机和消息。攻击者可以利用这个漏洞来读取、修改或删除敏感数据。

  • 拒绝服务通过发送大量无效或恶意的消息攻击者可以导致AMQP服务器崩溃或变得不可用从而导致拒绝服务攻击。

  • 消息泄漏:如果消息未正确加密或保护,攻击者可以通过监听网络流量或拦截消息来获取敏感信息。这可能包括用户凭据、敏感数据或业务机密。

AMQP防御措施

以下是一些保护AMQP服务的措施

  • 强化访问控制确保只有经过授权的用户可以访问和操作AMQP服务器。使用强密码、限制IP访问和启用身份验证等措施可以帮助防止未授权访问。

  • 限制资源使用:通过限制每个连接和通道的资源使用量,可以防止拒绝服务攻击。此外,监控服务器资源使用情况,并及时采取措施来应对异常情况。

  • 加密通信使用TLS/SSL等加密协议来保护AMQP通信确保消息在传输过程中不被窃听或篡改。

  • 安全审计定期审计AMQP服务器的配置和日志以及监控网络流量和消息传递。及时发现和修复潜在的漏洞和安全问题。

  • 敏感信息保护:对于包含敏感信息的消息,应该使用适当的加密和身份验证措施来保护数据的机密性和完整性。

结论

AMQP是一种强大的消息传递协议但在渗透测试中也存在一些潜在的安全风险。通过使用自动化工具和遵循安全最佳实践可以帮助保护AMQP服务免受攻击并确保消息的安全传递。

nmap -sV -Pn -n -T4 -p 5672 --script amqp-info <IP>

PORT     STATE SERVICE VERSION
5672/tcp open  amqp    RabbitMQ 3.1.5 (0-9)
| amqp-info:
|   capabilities:
|     publisher_confirms: YES
|     exchange_exchange_bindings: YES
|     basic.nack: YES
|     consumer_cancel_notify: YES
|   copyright: Copyright (C) 2007-2013 GoPivotal, Inc.
|   information: Licensed under the MPL.  See http://www.rabbitmq.com/
|   platform: Erlang/OTP
|   product: RabbitMQ
|   version: 3.1.5
|   mechanisms: PLAIN AMQPLAIN
|_  locales: en_US

其他RabbitMQ端口

https://www.rabbitmq.com/networking.html可以找到RabbitMQ使用了多个端口

Shodan

  • AMQP
☁️ HackTricks云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥