☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - 你在一家**网络安全公司**工作吗?你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! - 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family) - 获得[**官方PEASS和HackTricks的衣物**](https://peass.creator-spring.com) - **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我在**推特**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。
# 基本信息 **RabbitMQ**是一种**消息队列软件**,也被称为_消息代理_或_队列管理器_。简单来说,它是一种软件,其中定义了队列,应用程序连接到这些队列以传输消息。\ **消息可以包含任何类型的信息**。例如,它可以包含关于应该在另一个应用程序上启动的进程或任务的信息(甚至可以在另一台服务器上),或者它可以只是一个简单的文本消息。队列管理器软件将消息存储在队列中,直到接收应用程序连接并将消息从队列中取出。然后,接收应用程序处理该消息。\ 定义来自[这里](https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html)。 **默认端口**: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端口,以确定是否开放。 ```bash nmap -p 5671,5672 <目标IP> ``` #### AMQP枚举 使用amqp-probe工具对AMQP进行枚举,以获取有关目标主机上的AMQP服务的详细信息。 ```bash amqp-probe -t <目标IP> -p 5672 ``` #### AMQP爆破 使用amqp-bunny工具对AMQP进行爆破,以尝试破解目标主机上的AMQP服务的凭据。 ```bash amqp-bunny -t <目标IP> -p 5672 -u <用户名字典> -p <密码字典> ``` #### AMQP漏洞利用 根据枚举和爆破的结果,使用相应的漏洞利用工具对目标主机上的AMQP服务进行攻击。 ### 参考链接 - [AMQP官方网站](https://www.amqp.org/) ```python import amqp #By default it uses default credentials "guest":"guest" conn = amqp.connection.Connection(host="", 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服务免受攻击,并确保消息的安全传递。 ```bash nmap -sV -Pn -n -T4 -p 5672 --script amqp-info 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](https://www.rabbitmq.com/networking.html)可以找到**RabbitMQ使用了多个端口**: - **1883, 8883**: ([MQTT客户端](http://mqtt.org)无TLS和有TLS的情况,如果启用了[MQTT插件](https://www.rabbitmq.com/mqtt.html)。[**了解有关如何对MQTT进行渗透测试的更多信息**](1883-pentesting-mqtt-mosquitto.md)。 - **4369: epmd**,RabbitMQ节点和CLI工具使用的对等发现服务。[**了解有关如何对此服务进行渗透测试的更多信息**](4369-pentesting-erlang-port-mapper-daemon-epmd.md)。 - **5672, 5671**: AMQP 0-9-1和1.0客户端使用的端口,无TLS和有TLS。 - **15672**: [HTTP API](https://www.rabbitmq.com/management.html)客户端,[管理界面](https://www.rabbitmq.com/management.html)和[rabbitmqadmin](https://www.rabbitmq.com/management-cli.html)(仅在启用了[管理插件](https://www.rabbitmq.com/management.html)的情况下)。[**了解有关如何对此服务进行渗透测试的更多信息**](15672-pentesting-rabbitmq-management.md)。 - 15674: STOMP-over-WebSockets客户端(仅在启用了[Web STOMP插件](https://www.rabbitmq.com/web-stomp.html)的情况下) - 15675: MQTT-over-WebSockets客户端(仅在启用了[Web MQTT插件](https://www.rabbitmq.com/web-mqtt.html)的情况下) - 15692: Prometheus指标(仅在启用了[Prometheus插件](https://www.rabbitmq.com/prometheus.html)的情况下) - 25672: 用于节点间和CLI工具通信的Erlang分布服务器端口,从动态范围分配(默认情况下仅限于单个端口,计算为AMQP端口+20000)。除非这些端口的外部连接确实是必要的(例如集群使用[federation](https://www.rabbitmq.com/federation.html)或CLI工具在子网外的机器上使用),否则不应公开这些端口。有关详细信息,请参阅[网络指南](https://www.rabbitmq.com/networking.html)。**只有9个这样的端口在互联网上打开**。 - 35672-35682: 用于CLI工具的Erlang分布客户端端口,用于与节点通信,从动态范围分配(计算为服务器分布端口+10000到服务器分布端口+10010)。有关详细信息,请参阅[网络指南](https://www.rabbitmq.com/networking.html)。 - 61613, 61614: [STOMP客户端](https://stomp.github.io/stomp-specification-1.2.html)无TLS和有TLS的情况(仅在启用了[STOMP插件](https://www.rabbitmq.com/stomp.html)的情况下)。少于10个设备开放了此端口,主要用于DHT节点的UDP。 # Shodan * `AMQP`
☁️ HackTricks云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - 你在一家**网络安全公司**工作吗?想要在HackTricks中**宣传你的公司**吗?或者想要获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! - 发现我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family) - 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com) - **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或在**Twitter**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** - **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。