hacktricks/network-services-pentesting/27017-27018-mongodb.md
2024-02-10 15:36:32 +00:00

25 KiB

27017,27018 - Pentesting MongoDB

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Treten Sie dem HackenProof Discord Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!

Hacking Insights
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 auf Discord bei und beginnen Sie noch heute mit Top-Hackern zusammenzuarbeiten!

Grundlegende Informationen

MongoDB ist ein Open-Source-Datenbankmanagementsystem, das ein dokumentenorientiertes Datenbankmodell verwendet, um verschiedene Formen von Daten zu verarbeiten. Es bietet Flexibilität und Skalierbarkeit für die Verwaltung von unstrukturierten oder halbstrukturierten 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

Manuelle Enumeration

MongoDB kann auf den Standardports 27017 und 27018 laufen. Um MongoDB-Instanzen zu finden, können verschiedene Methoden verwendet werden:

Port-Scanning

Verwenden Sie Tools wie Nmap, um nach offenen Ports zu suchen:

nmap -p 27017,27018 <ziel-ip>

Shodan

Shodan ist eine Suchmaschine für vernetzte Geräte. Sie können nach MongoDB-Instanzen suchen, indem Sie den Befehl mongodb verwenden:

mongodb

Censys

Censys ist eine weitere Suchmaschine für vernetzte Geräte. Sie können nach MongoDB-Instanzen suchen, indem Sie den Befehl mongodb verwenden:

mongodb

Automatisiert

Es gibt auch Tools, die den Prozess der MongoDB-Enumeration automatisieren:

MongoSniff

MongoSniff ist ein Tool, das den Netzwerkverkehr überwacht und nach MongoDB-Instanzen sucht. Sie können es wie folgt verwenden:

mongosniff -p 27017,27018

Mongoaudit

Mongoaudit ist ein Tool, das die Sicherheit von MongoDB-Instanzen überprüft. Es kann auch verwendet werden, um MongoDB-Instanzen zu finden:

mongoaudit --host <ziel-ip> --port 27017,27018

Exploitation

Nicht authentifizierte MongoDB-Instanzen

Wenn Sie auf eine nicht authentifizierte MongoDB-Instanz zugreifen können, können Sie verschiedene Aktionen ausführen, wie z.B. Datenbanken anzeigen, Datenbanken erstellen, Datenbanken löschen, Datenbanken umbenennen, Datenbanken kopieren, Datenbanken exportieren, Datenbanken importieren, Datenbanken reparieren, Datenbanken komprimieren, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Datenbanken wiederherstellen, Datenbanken migrieren, Datenbanken überwachen, Datenbanken optimieren, Datenbanken überwachen, Datenbanken replizieren, Datenbanken sharden, Datenbanken indizieren, Datenbanken sichern, Daten

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

MongoDB is a popular NoSQL database that is widely used in web applications. It uses a binary protocol for communication between the client and the server. By default, MongoDB listens on port 27017 for incoming connections.

MongoDB Information Gathering

Before attempting any attacks on a MongoDB server, it is important to gather as much information as possible about the target. This can be done using various tools and techniques.

Banner Grabbing

Banner grabbing is a technique used to gather information about a service by examining the banner or response sent by the server. This can be done using tools like telnet or nc (netcat).

$ telnet <target_ip> 27017
Nmap

Nmap is a powerful network scanning tool that can be used to discover open ports and gather information about the services running on those ports. The following command can be used to scan for open MongoDB ports:

$ nmap -p 27017 <target_ip>
Shodan

Shodan is a search engine for internet-connected devices. It can be used to search for MongoDB servers and gather information about them. The following query can be used to search for MongoDB servers:

port:27017

MongoDB Exploitation

Once enough information has been gathered about the target MongoDB server, various exploitation techniques can be used to gain unauthorized access or extract sensitive information.

Default Credentials

MongoDB installations often come with default credentials that are not changed by the users. It is important to check if the default credentials are still in use. The following command can be used to attempt a login using the default credentials:

$ mongo <target_ip>:27017
Brute-Force Attacks

If default credentials are not found, a brute-force attack can be attempted to guess the username and password combination. Tools like hydra or medusa can be used for this purpose.

$ hydra -L usernames.txt -P passwords.txt <target_ip> mongodb
Injection Attacks

Injection attacks can be used to exploit vulnerabilities in the MongoDB query language. This can allow an attacker to execute arbitrary commands or extract sensitive information from the database. Tools like NoSQLMap can be used for this purpose.

$ nosqlmap -u "mongodb://<target_ip>:27017" --exploit injection

MongoDB Security Recommendations

To secure a MongoDB server and prevent unauthorized access, the following recommendations should be followed:

  • Change default credentials and use strong passwords.
  • Enable authentication and disable anonymous access.
  • Regularly update MongoDB to the latest version to patch any security vulnerabilities.
  • Implement network security measures like firewalls to restrict access to the MongoDB server.
  • Regularly monitor and log MongoDB server activity for any suspicious behavior.

By following these recommendations, the security of a MongoDB server can be significantly improved.

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" -"partially enabled"
  • Nur teilweise Authentifizierung aktiviert: "mongodb server information" "partially enabled"

Anmeldung

Standardmäßig erfordert 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 nach, um herauszufinden, 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-stellige hexadezimale Zeichenketten:

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

Hier ist zum Beispiel, wie wir eine tatsächliche Object ID analysieren können, die von einer Anwendung zurückgegeben wird: 5f2459ac9fa6dc2500314019

  1. 5f2459ac: 1596217772 in Dezimal = Freitag, 31. Juli 2020 17:49:32
  2. 9fa6dc: Maschinenkennung
  3. 2500: Prozess-ID
  4. 314019: Ein inkrementeller Zähler

Von den oben genannten Elementen bleibt die Maschinenkennung so lange gleich, wie die Datenbank auf der gleichen 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 des Zähler- und Zeitstempelwerts 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. Sie müssen sie nur per Brute-Force ausprobieren.

Beitrag

Wenn Sie root sind, können Sie die mongodb.conf-Datei ändern, sodass keine Anmeldeinformationen erforderlich sind (noauth = true) und ohne Anmeldeinformationen angemeldet werden kann.


Treten Sie dem HackenProof Discord-Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!

Hacking Insights
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 bei und beginnen Sie noch heute mit Top-Hackern zusammenzuarbeiten!

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen: