6.7 KiB
27017,27018 - Pentesting MongoDB
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks beworben sehen möchten oder HackTricks im PDF-Format herunterladen möchten, überprüfen Sie die ABONNEMENTPLÄNE!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud github Repositories einreichen.
Treten Sie dem HackenProof Discord Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!
Hacking-Einblicke
Beschäftigen Sie sich mit Inhalten, die sich mit dem Nervenkitzel und den Herausforderungen des Hackens befassen
Echtzeit-Hack-News
Bleiben Sie mit der schnelllebigen Hacking-Welt durch Echtzeit-Nachrichten und Einblicke auf dem Laufenden
Neueste Ankündigungen
Bleiben Sie über die neuesten Bug-Bounties und wichtige Plattformupdates informiert
Treten Sie uns bei Discord und beginnen Sie noch heute mit der Zusammenarbeit mit Top-Hackern!
Grundlegende Informationen
MongoDB ist ein Open-Source-Datenbankverwaltungssystem, das ein dokumentenorientiertes Datenbankmodell verwendet, um verschiedene Formen von Daten zu verarbeiten. Es bietet Flexibilität und Skalierbarkeit für die Verwaltung unstrukturierter oder halbstrukturierter Daten in Anwendungen wie Big Data-Analyse und Content-Management. Standardport: 27017, 27018
PORT STATE SERVICE VERSION
27017/tcp open mongodb MongoDB 2.6.9 2.6.9
Enumeration
Manuell
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
Einige MongoDB-Befehle:
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
Automatisch
nmap -sV --script "mongo* and default" -p 27017 <IP> #By default all the nmap mongo enumerate scripts are used
Shodan
- Alle MongoDB:
"mongodb server information"
- Suche nach vollständig offenen MongoDB-Servern:
"mongodb server information" -"teilweise aktiviert"
- Nur teilweise Authentifizierung aktiviert:
"mongodb server information" "teilweise aktiviert"
Anmeldung
Standardmäßig benötigt Mongo kein Passwort.
Admin ist eine gängige Mongo-Datenbank.
mongo <HOST>
mongo <HOST>:<PORT>
mongo <HOST>:<PORT>/<DB>
mongo <database> -u <username> -p '<password>'
Das nmap-Skript: mongodb-brute überprüft, ob Anmeldeinformationen erforderlich sind.
nmap -n -sV --script mongodb-brute -p 27017 <ip>
Brute force
Schauen Sie in /opt/bitnami/mongodb/mongodb.conf, um festzustellen, ob Anmeldeinformationen erforderlich sind:
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 Vorhersage
Beispiel von hier.
Mongo Object IDs sind 12-Byte-hexadezimale Zeichenfolgen:
Zum Beispiel, so können wir eine tatsächliche Object ID, die von einer Anwendung zurückgegeben wird, analysieren: 5f2459ac9fa6dc2500314019
- 5f2459ac: 1596217772 in Dezimal = Freitag, 31. Juli 2020 17:49:32
- 9fa6dc: Maschinenkennung
- 2500: Prozess-ID
- 314019: Ein inkrementeller Zähler
Von den oben genannten Elementen wird die Maschinenkennung so lange gleich bleiben, wie die Datenbank auf derselben physischen/virtuellen Maschine läuft. Die Prozess-ID ändert sich nur, wenn der MongoDB-Prozess neu gestartet wird. Der Zeitstempel wird jede Sekunde aktualisiert. Die einzige Herausforderung beim Raten von Object IDs durch einfaches Inkrementieren der Zähler- und Zeitstempelwerte besteht darin, dass Mongo DB Object IDs generiert und Object IDs auf Systemebene zuweist.
Das Tool https://github.com/andresriancho/mongo-objectid-predict sendet bei Angabe einer Start-Object-ID (Sie können ein Konto erstellen und eine Start-ID erhalten) etwa 1000 wahrscheinliche Object IDs zurück, die möglicherweise den nächsten Objekten zugewiesen wurden, sodass Sie sie nur noch per Bruteforce durchgehen müssen.
Beitrag
Wenn Sie Root sind, können Sie die mongodb.conf-Datei ändern, sodass keine Anmeldeinformationen erforderlich sind (noauth = true) und sich ohne Anmeldeinformationen anmelden.
Treten Sie dem HackenProof Discord Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!
Hacking-Einblicke
Beschäftigen Sie sich mit Inhalten, die sich mit dem Nervenkitzel und den Herausforderungen des Hackens befassen
Echtzeit-Hack-News
Bleiben Sie mit der schnelllebigen Hacking-Welt durch Echtzeitnachrichten und Einblicke auf dem Laufenden
Neueste Ankündigungen
Bleiben Sie über die neuesten Bug-Bounties und wichtigen Plattformupdates informiert
Treten Sie uns bei Discord bei und beginnen Sie noch heute mit der Zusammenarbeit mit Top-Hackern!