mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-30 08:30:57 +00:00
168 lines
10 KiB
Markdown
168 lines
10 KiB
Markdown
<details>
|
||
|
||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
||
- 你在一家**网络安全公司**工作吗?你想在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来分享你的黑客技巧**。
|
||
|
||
</details>
|
||
|
||
|
||
# 基本信息
|
||
|
||
**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="<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服务免受攻击,并确保消息的安全传递。
|
||
```bash
|
||
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](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`
|
||
|
||
|
||
<details>
|
||
|
||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
||
- 你在一家**网络安全公司**工作吗?想要在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来分享你的黑客技巧**。
|
||
|
||
</details>
|