hacktricks/network-services-pentesting/27017-27018-mongodb.md

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:

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:

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

Zum Beispiel, so können wir eine tatsächliche Object ID, die von einer Anwendung zurückgegeben wird, analysieren: 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 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!