9.1 KiB
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
-
The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
-
公式のPEASS&HackTricksのグッズを手に入れましょう。
-
💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm.
-
**ハッキングのトリックを共有するには、hacktricksリポジトリとhacktricks-cloudリポジトリ**にPRを提出してください。
基本情報
RabbitMQは、_メッセージキューソフトウェア_としても知られる_メッセージブローカー_または_キューマネージャー_です。簡単に言えば、アプリケーションがメッセージを転送するために接続するキューが定義されているソフトウェアです。
メッセージには任意の情報が含まれることができます。たとえば、別のアプリケーション(別のサーバー上にある場合もあります)で開始するプロセスやタスクに関する情報が含まれる場合もありますし、単純なテキストメッセージの場合もあります。キューマネージャーソフトウェアは、メッセージを受信するアプリケーションが接続し、キューからメッセージを取り出すまでメッセージを保存します。受信するアプリケーションは、その後、メッセージを処理します。
ここからの定義。
デフォルトポート: 5672,5671
PORT STATE SERVICE VERSION
5672/tcp open amqp RabbitMQ 3.1.5 (0-9)
列挙
手動
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のペンテストでは、これらの攻撃手法と対策を理解し、適切なセキュリティ対策を実施することが重要です。
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クライアント(MQTTプラグインが有効な場合はTLSなしとTLSあり)。MQTTのペントestingの詳細はこちらを参照してください。
- 4369: epmd: RabbitMQノードとCLIツールによって使用されるピアディスカバリーサービス。このサービスのペントestingの詳細はこちらを参照してください。
- 5672、5671: AMQP 0-9-1および1.0クライアントがTLSなしおよびTLSありで使用するポート
- 15672: HTTP APIクライアント、管理UI、およびrabbitmqadmin(管理プラグインが有効な場合のみ)。このサービスのペントestingの詳細はこちらを参照してください。
- 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クライアント(STOMPプラグインが有効な場合のみ、TLSなしとTLSあり)(このポートが開いているデバイスは10台未満で、ほとんどがDHTノード用のUDPです)。
Shodan
AMQP