11 KiB
5671,5672 - AMQP Pentesting
AWS hacklemeyi sıfırdan kahraman olmak için htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile öğrenin!
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamını görmek veya HackTricks'i PDF olarak indirmek için ABONELİK PLANLARI'na göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- The PEASS Ailesi'ni keşfedin, özel NFT'lerimiz koleksiyonumuz
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter 🐦 @carlospolopm'ı takip edin.
- Hacking hilelerinizi HackTricks ve HackTricks Cloud github reposuna PR göndererek paylaşın.
Temel Bilgiler
cloudamqp'den alınan bilgilere göre:
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 .
Varsayılan port: 5672,5671
PORT STATE SERVICE VERSION
5672/tcp open amqp RabbitMQ 3.1.5 (0-9)
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>
RabbitMQ Management API
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
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.
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)
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.
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.
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.
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
Brute Force
Diğer RabbitMQ portları
https://www.rabbitmq.com/networking.html adresinde rabbitmq'nun birkaç port kullandığını bulabilirsiniz:
- 1883, 8883: (MQTT istemcileri ve TLS ile MQTT istemcileri, MQTT eklentisi etkinleştirilmişse. MQTT'nin nasıl pentest edileceği hakkında daha fazla bilgi edinin.
- 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.
- 5672, 5671: AMQP 0-9-1 ve 1.0 istemcileri tarafından TLS olmadan ve TLS ile kullanılır
- 15672: HTTP API istemcileri, yönetim arayüzü ve rabbitmqadmin (sadece yönetim eklentisi etkinleştirilmişse). Bu hizmetin nasıl pentest edileceği hakkında daha fazla bilgi edinin.
- 15674: STOMP-over-WebSockets istemcileri (sadece Web STOMP eklentisi etkinleştirilmişse)
- 15675: MQTT-over-WebSockets istemcileri (sadece Web MQTT eklentisi etkinleştirilmişse)
- 15692: Prometheus metrikleri (sadece Prometheus eklentisi 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 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 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 bakın.
- 61613, 61614: TLS olmadan ve TLS ile STOMP istemcileri (sadece STOMP eklentisi 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
AMQP
Sıfırdan kahraman olmak için AWS hackleme öğrenin htARTE (HackTricks AWS Red Team Expert)!
HackTricks'i desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'i PDF olarak indirmek için ABONELİK PLANLARINA göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- Özel NFT'lerden oluşan koleksiyonumuz olan The PEASS Family'yi keşfedin
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter 🐦 @carlospolopm'u takip edin.
- Hacking hilelerinizi HackTricks ve HackTricks Cloud github reposuna PR göndererek paylaşın.