10 KiB
☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
你在一家网络安全公司工作吗?你想在HackTricks中看到你的公司广告吗?或者你想获得PEASS的最新版本或下载HackTricks的PDF吗?请查看订阅计划!
-
发现我们的独家NFTs收藏品The PEASS Family
-
加入 💬 Discord群组 或 电报群组 或 关注我在推特上的🐦@carlospolopm.
-
通过向hacktricks repo和hacktricks-cloud repo提交PR来分享你的黑客技巧。
基本信息
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-CLI:RabbitMQ-CLI是一个命令行工具,用于与RabbitMQ服务器进行交互。它提供了一组命令,用于管理队列、交换机和绑定,以及发送和接收消息。
-
AMQP-Client:AMQP-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使用了多个端口:
- 1883, 8883: (MQTT客户端无TLS和有TLS的情况,如果启用了MQTT插件。了解有关如何对MQTT进行渗透测试的更多信息。
- 4369: epmd,RabbitMQ节点和CLI工具使用的对等发现服务。了解有关如何对此服务进行渗透测试的更多信息。
- 5672, 5671: AMQP 0-9-1和1.0客户端使用的端口,无TLS和有TLS。
- 15672: HTTP API客户端,管理界面和rabbitmqadmin(仅在启用了管理插件的情况下)。了解有关如何对此服务进行渗透测试的更多信息。
- 15674: STOMP-over-WebSockets客户端(仅在启用了Web STOMP插件的情况下)
- 15675: MQTT-over-WebSockets客户端(仅在启用了Web MQTT插件的情况下)
- 15692: Prometheus指标(仅在启用了Prometheus插件的情况下)
- 25672: 用于节点间和CLI工具通信的Erlang分布服务器端口,从动态范围分配(默认情况下仅限于单个端口,计算为AMQP端口+20000)。除非这些端口的外部连接确实是必要的(例如集群使用federation或CLI工具在子网外的机器上使用),否则不应公开这些端口。有关详细信息,请参阅网络指南。只有9个这样的端口在互联网上打开。
- 35672-35682: 用于CLI工具的Erlang分布客户端端口,用于与节点通信,从动态范围分配(计算为服务器分布端口+10000到服务器分布端口+10010)。有关详细信息,请参阅网络指南。
- 61613, 61614: STOMP客户端无TLS和有TLS的情况(仅在启用了STOMP插件的情况下)。少于10个设备开放了此端口,主要用于DHT节点的UDP。
Shodan
AMQP
☁️ HackTricks云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
你在一家网络安全公司工作吗?想要在HackTricks中宣传你的公司吗?或者想要获得PEASS的最新版本或下载PDF格式的HackTricks吗?请查看订阅计划!
-
发现我们的独家NFTs收藏品The PEASS Family
-
加入💬 Discord群组或电报群组,或在Twitter上关注我🐦@carlospolopm。
-
通过向hacktricks repo和hacktricks-cloud repo提交PR来分享你的黑客技巧。