hacktricks/network-services-pentesting/5671-5672-pentesting-amqp.md
2023-07-07 23:42:27 +00:00

100 lines
9.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</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を入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
- [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](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リポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](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)
```
# 列挙
## 手動
```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のポート番号は、5671と5672です。通常、5672番ポートが使用されますが、TLS/SSLで保護された接続が必要な場合は、5671番ポートを使用します。
AMQPのペンテストでは、以下のような攻撃手法が使用されます。
- ポートスキャンAMQPサーバーのポートをスキャンして、開いているポートを特定します。
- デフォルトの認証情報デフォルトのユーザー名とパスワードを使用してAMQPサーバーにログインします。
- ユーザー列挙:有効なユーザー名を特定するために、ユーザー名の列挙を試みます。
- パスワード攻撃:既知のユーザー名に対してパスワード攻撃を実行し、正しいパスワードを特定します。
- メッセージの傍受AMQPメッセージを傍受して、機密情報を取得します。
- メッセージの改ざんAMQPメッセージを改ざんして、攻撃者が意図した操作を実行します。
AMQPのセキュリティを向上させるためには、以下の対策を実施することが重要です。
- ポートの制限:不要なポートを閉じるか、必要なポートのみを開くようにします。
- 強力な認証情報:デフォルトのユーザー名とパスワードを変更し、強力なパスワードポリシーを実施します。
- ユーザー名の列挙の防止:エラーメッセージにユーザー名の情報を含めないようにします。
- パスワード攻撃の防止アカウントロックアウトやCAPTCHAなどの対策を実施します。
- 暗号化の使用TLS/SSLを使用して通信を暗号化します。
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)MQTTプラグインが有効な場合はTLSなしとTLSあり。[**MQTTのペントestingの詳細はこちら**](1883-pentesting-mqtt-mosquitto.md)を参照してください。
* **4369: epmd**: RabbitMQードとCLIツールによって使用されるピアディスカバリーサービス。[**このサービスのペントestingの詳細はこちら**](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)クライアント、[管理UI](https://www.rabbitmq.com/management.html)、および[rabbitmqadmin](https://www.rabbitmq.com/management-cli.html)[管理プラグイン](https://www.rabbitmq.com/management.html)が有効な場合のみ)。[**このサービスのペントestingの詳細はこちら**](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クライアント[STOMPプラグイン](https://www.rabbitmq.com/stomp.html)が有効な場合のみ、TLSなしとTLSありこのポートが開いているデバイスは10台未満で、ほとんどがDHTード用のUDPです
# Shodan
* `AMQP`