27017,27018 - Pentesting MongoDB

AWS hacklemeyi sıfırdan kahramana öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları:

  • Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız [ABONELİK PLANLARI]'na göz atın (https://github.com/sponsors/carlospolop)!

  • The PEASS Family'yi keşfedin, özel NFT'lerimiz koleksiyonumuz

  • Bize katılın 💬 Discord grubuna veya telegram grubuna katılın veya bizi Twitter 🐦 @carlospolopm'da takip edin.

  • Hacking püf noktalarınızı paylaşarak HackTricks ve HackTricks Cloud github depolarına PR göndererek katkıda bulunun.

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

Hackleme İçgörüleri Hackleme heyecanını ve zorluklarını ele alan içeriklerle etkileşime girin

Gerçek Zamanlı Hack Haberleri Hızlı tempolu hackleme dünyasında gerçek zamanlı haberler ve içgörülerle güncel kalın

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

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

Temel Bilgiler

MongoDB, çeşitli veri biçimlerini işlemek için belge odaklı veritabanı modeli kullanan bir açı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ısal 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

Numaralandırma

Manuel

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

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

Shodan

  • Tüm mongodb: "mongodb sunucu bilgisi"

  • Tamamen açık mongodb sunucularını arayın: "mongodb sunucu bilgisi" -"kısmen etkin"

  • Yalnızca kısmen kimlik doğrulamayı etkinleştirin: "mongodb sunucu bilgisi" "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>

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.

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

Ö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ıkta = Cuma, 31 Temmuz 2020 17:49:32

  2. 9fa6dc: Makine Tanımlayıcı

  3. 2500: İşlem Kimliği

  4. 314019: Artan sayaç

Yukarıdaki unsurlardan, makine tanımlayıcısı veritabanı aynı fiziksel/virüs makinesinde çalıştığı sürece aynı kalacaktır. İşlem Kimliği yalnızca MongoDB işlemi yeniden başlatıldığında değişecektir. Zaman damgası her saniyede güncellenecektir. Sadece sayaç ve zaman damgası değerlerini basitçe artırarak Object ID'leri tahmin etmede tek zorluk, Mongo DB'nin Object ID'leri oluşturduğu ve Object ID'leri sistem düzeyinde atadığı gerçeğidir.

https://github.com/andresriancho/mongo-objectid-predict aracı, başlangıç ​​Object ID'si verildiğinde (bir hesap oluşturabilir ve bir başlangıç ​​ID alabilirsiniz), bir sonraki nesnelere atandığı tahmin edilebilecek yaklaşık 1000 Object ID döndürür, bu yüzden sadece onları kaba kuvvetle çözmeniz gerekir.

Gönderi

Root kullanıcısıysanız, mongodb.conf dosyasını değiştirerek kimlik bilgilerine ihtiyaç duyulmadan (noauth = true) giriş yapabilirsiniz.


Deneyimli hackerlar ve hata 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ında gerçek zamanlı haberler ve içgörülerle güncel kalın

En Son Duyurular Yeni hata avcılıklarının başlatılması ve önemli platform güncellemeleri hakkında bilgi edinin

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

Last updated