hacktricks/network-services-pentesting/5671-5672-pentesting-amqp.md

153 lines
11 KiB
Markdown
Raw Normal View History

2024-02-10 18:14:16 +00:00
# 5671,5672 - AMQP Pentesting
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 18:14:16 +00:00
<summary><strong>AWS hacklemeyi sıfırdan kahraman olmak için</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile öğrenin!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 18:14:16 +00:00
HackTricks'ı desteklemenin diğer yolları:
2024-01-03 10:42:55 +00:00
2024-02-10 18:14:16 +00:00
* **Şirketinizi HackTricks'te reklamını görmek** veya **HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARI'na**](https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**'ı takip edin**.
* **Hacking hilelerinizi** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna **PR göndererek paylaşın**.
2022-04-28 16:01:33 +00:00
</details>
2024-02-10 18:14:16 +00:00
## Temel Bilgiler
2024-02-10 18:14:16 +00:00
[cloudamqp](https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html)'den alınan bilgilere göre:
2024-02-08 21:36:35 +00:00
2024-02-10 18:14:16 +00:00
> **RabbitMQ**, bir _mesaj kuyruğu yazılımı_ olarak da bilinen bir _mesaj aracısı_ veya _kuyruk yöneticisi_ dir. Basitçe söylemek gerekirse; uygulamaların bir mesajı veya mesajları aktarmak için bağlandığı kuyrukların tanımlandığı bir yazılımdır.\
> Bir **mesaj her türlü bilgiyi içerebilir**. Örneğin, başka bir uygulamada (hatta başka bir sunucuda bile olabilir) başlaması gereken bir süreç veya görev hakkında bilgi içerebilir veya sadece basit bir metin mesajı olabilir. Kuyruk yöneticisi yazılımı, mesajları bir alıcı uygulama bağlandığında ve kuyruktan bir mesaj alındığında depolar. Alıcı uygulama daha sonra mesajı işler.\
Tanımından .
2024-02-10 18:14:16 +00:00
**Varsayılan port**: 5672,5671
```
PORT STATE SERVICE VERSION
5672/tcp open amqp RabbitMQ 3.1.5 (0-9)
```
2024-02-10 18:14:16 +00:00
AMQP (Advanced Message Queuing Protocol) hedef sistemdeki mesaj kuyruklarını yönetmek için kullanılan bir protokoldür. AMQP, mesajların güvenli ve güvenilir bir şekilde iletilmesini sağlar. AMQP hedef sistemdeki mesaj kuyruklarını keşfetmek için çeşitli yöntemler kullanabiliriz.
#### Port Taraması
AMQP genellikle 5671 ve 5672 numaralı portlarda çalışır. Bu nedenle, hedef sistemde bu portların açık olup olmadığını kontrol etmek önemlidir. Port taraması yapmak için çeşitli araçlar kullanabiliriz, örneğin:
- Nmap: `nmap -p 5671,5672 <hedef_ip>`
- Masscan: `masscan -p5671,5672 <hedef_ip>`
#### Banner Grabbing
AMQP sunucusunun banner bilgilerini elde etmek, hedef sistem hakkında daha fazla bilgi edinmemizi sağlar. Banner bilgileri, sunucunun sürümü, yapılandırma ve diğer önemli bilgileri içerebilir. Banner bilgilerini elde etmek için çeşitli araçlar kullanabiliriz, örneğin:
- Telnet: `telnet <hedef_ip> 5672`
- Netcat: `nc <hedef_ip> 5672`
#### AMQP Keşfi
AMQP sunucusunda mevcut olan mesaj kuyruklarını keşfetmek için çeşitli yöntemler kullanabiliriz. Bu yöntemler arasında aşağıdakiler bulunur:
- AMQP komut satırı araçları: AMQP sunucusuna bağlanmak ve mevcut kuyrukları listelemek için çeşitli komut satırı araçları mevcuttur. Örneğin, RabbitMQ için `rabbitmqadmin` aracını kullanabiliriz.
- AMQP istemci kütüphaneleri: AMQP istemci kütüphaneleri, hedef sistemdeki mesaj kuyruklarını keşfetmek için kullanılabilir. Örneğin, Python'da `pika` kütüphanesini kullanabiliriz.
### Otomatik
AMQP hedef sistemdeki mesaj kuyruklarını otomatik olarak keşfetmek için çeşitli araçlar ve yöntemler mevcuttur. Bu araçlar ve yöntemler, hedef sistemdeki AMQP sunucusuna bağlanarak mevcut kuyrukları listeler.
#### AMQPScan
AMQPScan, hedef sistemdeki AMQP sunucusuna bağlanarak mevcut kuyrukları listeler. AMQPScan, Python tabanlı bir araçtır ve kullanımı oldukça basittir. Aşağıdaki komutu kullanarak AMQPScan aracını çalıştırabilirsiniz:
```
python amqp_scan.py <hedef_ip>
```
2024-02-10 18:14:16 +00:00
#### RabbitMQ Management API
2024-02-10 18:14:16 +00:00
RabbitMQ Management API, RabbitMQ sunucusuna HTTP üzerinden erişim sağlar ve mevcut kuyrukları listeler. API'ye erişmek için aşağıdaki URL'yi kullanabilirsiniz:
```
http://<hedef_ip>:15672/api/queues
```
2024-02-10 18:14:16 +00:00
Bu URL'ye GET isteği göndererek mevcut kuyrukları listeleyebilirsiniz. API, kullanıcı adı ve şifre gerektirebilir, bu nedenle kimlik doğrulama bilgilerini de sağlamanız gerekebilir.
#### Diğer Araçlar
Bunların yanı sıra, AMQP sunucusunda mevcut kuyrukları keşfetmek için diğer araçlar ve yöntemler de mevcuttur. Bu araçlar ve yöntemler, hedef sistemdeki AMQP sunucusuna bağlanarak mevcut kuyrukları listeler.
```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():
2024-02-10 18:14:16 +00:00
print(k, v)
```
2024-02-10 18:14:16 +00:00
### Otomatik
AMQP (Advanced Message Queuing Protocol), mesaj tabanlı bir iletişim protokolüdür. AMQP, mesajların güvenli ve güvenilir bir şekilde iletilmesini sağlar. Bu protokol, birçok farklı uygulama arasında mesaj alışverişi yapmak için kullanılır.
2024-02-10 18:14:16 +00:00
AMQP, birçok farklı özelliği destekler. Bu özellikler arasında mesajların güvenli bir şekilde şifrelenmesi, mesajların güvenilir bir şekilde iletilmesi, mesajların yönlendirilmesi ve mesajların sıralı bir şekilde teslim edilmesi bulunur.
2024-02-10 18:14:16 +00:00
AMQP, birçok farklı uygulama tarafından kullanılan bir protokoldür. Bu uygulamalar arasında mesaj kuyruklama sistemleri, dağıtık sistemler ve mikro hizmetler yer alır.
AMQP, birçok farklı güvenlik zafiyeti içerebilir. Bu zafiyetler arasında kimlik doğrulama eksiklikleri, yetkilendirme hataları ve mesajların şifrelenmemesi bulunur. Bu zafiyetler, bir saldırganın AMQP protokolünü kullanarak bir sistemdeki mesajları ele geçirmesine veya değiştirmesine olanak tanır.
AMQP protokolünü pentest etmek için birkaç farklı yöntem vardır. Bu yöntemler arasında güvenlik açıklarını tespit etmek, kimlik doğrulama ve yetkilendirme mekanizmalarını test etmek ve mesajları ele geçirmek veya değiştirmek yer alır. Bu yöntemler, bir saldırganın AMQP protokolünü kullanarak bir sistemdeki zayıf noktaları tespit etmesine ve istismar etmesine olanak tanır.
```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)
2024-02-10 18:14:16 +00:00
| 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
```
### Brute Force
2024-02-10 18:14:16 +00:00
* [**AMQP Protokolü Brute Force**](../generic-methodologies-and-resources/brute-force.md#amqp-activemq-rabbitmq-qpid-joram-and-solace)
* [**STOMP Protokolü Brute Force**](../generic-methodologies-and-resources/brute-force.md#stomp-activemq-rabbitmq-hornetq-and-openmq)
2024-02-10 18:14:16 +00:00
## Diğer RabbitMQ portları
2024-02-10 18:14:16 +00:00
[https://www.rabbitmq.com/networking.html](https://www.rabbitmq.com/networking.html) adresinde **rabbitmq'nun birkaç port** kullandığını bulabilirsiniz:
2024-02-10 18:14:16 +00:00
* **1883, 8883**: ([MQTT istemcileri](http://mqtt.org) ve TLS ile MQTT istemcileri, [MQTT eklentisi](https://www.rabbitmq.com/mqtt.html) etkinleştirilmişse. [**MQTT'nin nasıl pentest edileceği hakkında daha fazla bilgi edinin**](1883-pentesting-mqtt-mosquitto.md).
* **4369: epmd**, RabbitMQ düğümleri ve CLI araçları tarafından kullanılan bir eş keşif hizmeti. [**Bu hizmetin nasıl pentest edileceği hakkında daha fazla bilgi edinin**](4369-pentesting-erlang-port-mapper-daemon-epmd.md).
* **5672, 5671**: AMQP 0-9-1 ve 1.0 istemcileri tarafından TLS olmadan ve TLS ile kullanılır
* **15672**: [HTTP API](https://www.rabbitmq.com/management.html) istemcileri, [yönetim arayüzü](https://www.rabbitmq.com/management.html) ve [rabbitmqadmin](https://www.rabbitmq.com/management-cli.html) (sadece [yönetim eklentisi](https://www.rabbitmq.com/management.html) etkinleştirilmişse). [**Bu hizmetin nasıl pentest edileceği hakkında daha fazla bilgi edinin**](15672-pentesting-rabbitmq-management.md).
* 15674: STOMP-over-WebSockets istemcileri (sadece [Web STOMP eklentisi](https://www.rabbitmq.com/web-stomp.html) etkinleştirilmişse)
* 15675: MQTT-over-WebSockets istemcileri (sadece [Web MQTT eklentisi](https://www.rabbitmq.com/web-mqtt.html) etkinleştirilmişse)
* 15692: Prometheus metrikleri (sadece [Prometheus eklentisi](https://www.rabbitmq.com/prometheus.html) etkinleştirilmişse)
* 25672: düğümler arası ve CLI araçları ile iletişim için kullanılır (Erlang dağıtım sunucusu portu) ve varsayılan olarak bir dinamik aralıktan (AMQP portu + 20000 olarak hesaplanan) tek bir porta tahsis edilir. Bu portlara dış bağlantılar gerçekten gerekli değilse (örneğin küme [federasyon](https://www.rabbitmq.com/federation.html) kullanıyorsa veya CLI araçları alt ağ dışındaki makinelerde kullanılıyorsa), bu portlar genel olarak açık olmamalıdır. Ayrıntılar için [ağ kılavuzuna](https://www.rabbitmq.com/networking.html) bakın. **Sadece 9 adet bu port internet üzerinde açıktır**.
* 35672-35682: CLI araçları tarafından (Erlang dağıtım istemci portları) düğümlerle iletişim için kullanılır ve bir dinamik aralıktan tahsis edilir (sunucu dağıtım portu + 10000 ile sunucu dağıtım portu + 10010 arasında hesaplanır). Ayrıntılar için [ağ kılavuzuna](https://www.rabbitmq.com/networking.html) bakın.
* 61613, 61614: TLS olmadan ve TLS ile [STOMP istemcileri](https://stomp.github.io/stomp-specification-1.2.html) (sadece [STOMP eklentisi](https://www.rabbitmq.com/stomp.html) etkinleştirilmişse). Bu porta sahip olan cihaz sayısı 10'dan azdır ve çoğunlukla DHT düğümleri için UDP kullanılır.
## Shodan
2020-10-01 14:38:08 +00:00
* `AMQP`
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 18:14:16 +00:00
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 18:14:16 +00:00
HackTricks'i desteklemenin diğer yolları:
2024-01-03 10:42:55 +00:00
2024-02-10 18:14:16 +00:00
* Şirketinizi HackTricks'te **reklamınızı görmek** veya HackTricks'i **PDF olarak indirmek** için [**ABONELİK PLANLARINA**](https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* Özel [**NFT'lerden**](https://opensea.io/collection/the-peass-family) oluşan koleksiyonumuz olan [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)'u takip edin.
* **Hacking hilelerinizi** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna **PR göndererek** paylaşın.
2022-04-28 16:01:33 +00:00
</details>