hacktricks/network-services-pentesting/27017-27018-mongodb.md
2024-02-10 18:14:16 +00:00

9 KiB
Raw Blame History

27017,27018 - MongoDB Pentesting

AWS hacklemeyi sıfırdan kahramanla öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları:

Deneyimli hackerlar ve ödül avcıları ile iletişim kurmak için HackenProof Discord sunucusuna katılın!

Hacking İçgörüleri
Hacking'in heyecanını ve zorluklarını inceleyen içeriklerle etkileşime geçin

Gerçek Zamanlı Hack Haberleri
Hızlı tempolu hacking dünyasını gerçek zamanlı haberler ve içgörülerle takip edin

En Son Duyurular
Yeni ödül avı başlatmaları ve önemli platform güncellemeleri hakkında bilgi sahibi olun

Bize katılın Discord ve bugün en iyi hackerlarla işbirliği yapmaya başlayın!

Temel Bilgiler

MongoDB, çeşitli veri biçimlerini işlemek için bir belge odaklı veritabanı modeli kullanan bir ık kaynaklı veritabanı yönetim sistemidir. Büyük veri analitiği ve içerik yönetimi gibi uygulamalarda yapısal olmayan veya yarı yapılandırılmış verileri yönetmek için esneklik ve ölçeklenebilirlik sunar. Varsayılan port: 27017, 27018

PORT      STATE SERVICE VERSION
27017/tcp open  mongodb MongoDB 2.6.9 2.6.9

Saptama

El ile

from pymongo import MongoClient
client = MongoClient(host, port, username=username, password=password)
client.server_info() #Basic info
#If you have admin access you can obtain more info
admin = client.admin
admin_info = admin.command("serverStatus")
cursor = client.list_databases()
for db in cursor:
print(db)
print(client[db["name"]].list_collection_names())
#If admin access, you could dump the database also

Bazı MongoDB komutları:

show dbs
use <db>
show collections
db.<collection>.find()  #Dump the collection
db.<collection>.count() #Number of records of the collection
db.current.find({"username":"admin"})  #Find in current db the username admin

Otomatik

MongoDB, bir NoSQL veritabanıdır ve genellikle web uygulamalarında kullanılır. MongoDB, varsayılan olarak 27017 ve 27018 portlarını kullanır. Bu portlar, MongoDB sunucusuna erişim sağlamak için kullanılır.

MongoDB sunucusuna otomatik olarak saldırmak için bazı araçlar ve teknikler vardır. Bu araçlar, MongoDB sunucusuna erişim sağlamak için standart saldırı vektörlerini kullanır. Bu saldırı vektörleri arasında brute force saldırıları, zayıf şifrelerin tespiti ve MongoDB sunucusunun açıkta bırakılan verilerini keşfetmek için yapılan sorgular yer alır.

Bir MongoDB sunucusuna otomatik olarak saldırmak için kullanılan bazı popüler araçlar şunlardır:

  • MongoDB Exploit Framework (MongoBuster): Bu araç, MongoDB sunucusuna brute force saldırıları gerçekleştirmek için kullanılır. Kullanıcı adı ve şifre kombinasyonlarını deneyerek MongoDB sunucusuna erişim sağlamaya çalışır.

  • MongoSniff: Bu araç, MongoDB sunucusuna yapılan sorguları dinlemek ve analiz etmek için kullanılır. Bu sayede, MongoDB sunucusunun açıkta bırakılan verilerini keşfetmek mümkün olabilir.

  • Mongoaudit: Bu araç, MongoDB sunucusunun güvenlik açıklarını tespit etmek için kullanılır. Zayıf şifreler, güvenlik duvarı ayarları ve diğer güvenlik önlemleri gibi konuları kontrol eder.

Bu araçlar, MongoDB sunucusuna otomatik olarak saldırmak için kullanılan bazı popüler tekniklerdir. Ancak, bu tekniklerin yasal ve etik sınırlar içinde kullanılması önemlidir.

nmap -sV --script "mongo* and default" -p 27017 <IP> #By default all the nmap mongo enumerate scripts are used

Shodan

  • Tüm mongodb'leri ara: "mongodb sunucu bilgileri"
  • Tamamen açık mongodb sunucularını ara: "mongodb sunucu bilgileri" -"kısmen etkin"
  • Sadece kısmen yetkilendirme etkinleştirilmiş olanları ara: "mongodb sunucu bilgileri" "kısmen etkin"

Giriş

Varsayılan olarak mongo şifre gerektirmez.
Admin, yaygın bir mongo veritabanıdır.

mongo <HOST>
mongo <HOST>:<PORT>
mongo <HOST>:<PORT>/<DB>
mongo <database> -u <username> -p '<password>'

Nmap betiği: mongodb-brute, kimlik bilgilerinin gerekip gerekmediğini kontrol edecektir.

nmap -n -sV --script mongodb-brute -p 27017 <ip>

Brute force

Kimlik bilgilerinin gerekip gerekmediğini öğrenmek için /opt/bitnami/mongodb/mongodb.conf dosyasına bakın:

grep "noauth.*true" /opt/bitnami/mongodb/mongodb.conf | grep -v "^#" #Not needed
grep "auth.*true" /opt/bitnami/mongodb/mongodb.conf | grep -v "^#\|noauth" #Not needed

Mongo Objectid Tahmini

Örnek buradan alınmıştır.

Mongo Object ID'leri 12 baytlık onaltılık dizelerdir:

http://techidiocy.com/_id-objectid-in-mongodb/

Örneğin, bir uygulama tarafından döndürülen gerçek bir Object ID'yi nasıl analiz edebileceğimizi görelim: 5f2459ac9fa6dc2500314019

  1. 5f2459ac: 1596217772 ondalık olarak = Cuma, 31 Temmuz 2020 17:49:32
  2. 9fa6dc: Makine Tanımlayıcısı
  3. 2500: İşlem Kimliği
  4. 314019: Artan bir sayaç

Yukarıdaki unsurlardan, makine tanımlayıcısı, veritabanı aynı fiziksel/virtual makine üzerinde çalıştığı sürece aynı kalır. İşlem Kimliği, MongoDB işlemi yeniden başlatıldığında yalnızca değişir. Zaman damgası her saniye güncellenir. Sadece sayaç ve zaman damgası değerlerini artırarak Object ID'leri tahmin etme konusundaki tek zorluk, Mongo DB'nin Object ID'leri oluşturması ve Object ID'leri sistem düzeyinde atamasıdır.

https://github.com/andresriancho/mongo-objectid-predict aracı, başlangıç Object ID'si verildiğinde (bir hesap oluşturabilir ve başlangıç ID'si alabilirsiniz), bir sonraki nesnelere atanan olası 1000 Object ID'sini geri gönderir, bu yüzden sadece onları bruteforce yapmanız gerekir.

Gönderi

Eğer root iseniz, mongodb.conf dosyasını değiştirerek kimlik bilgisi gerektirilmez (noauth = true) ve kimlik bilgisi olmadan giriş yapabilirsiniz.


Deneyimli hackerlar ve hata ödül avcıları ile iletişim kurmak için HackenProof Discord sunucusuna katılın!

Hacking Insights
Hacking'in heyecanına ve zorluklarına dalmış içeriklerle etkileşim kurun

Gerçek Zamanlı Hack Haberleri
Hızlı tempolu hacking dünyasını gerçek zamanlı haberler ve içgörülerle takip edin

En Son Duyurular
Yeni hata ödülleri başlatma ve önemli platform güncellemeleri hakkında bilgi edinin

Bize katılın Discord ve bugün en iyi hackerlarla işbirliği yapmaya başlayın!

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları: