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

7.8 KiB

27017,27018 - Pentesting MongoDB

{% hint style="success" %} Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

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

Hacking Einblicke
Engagieren Sie sich mit Inhalten, die in den Nervenkitzel und die Herausforderungen des Hackens eintauchen

Echtzeit-Hack-Nachrichten
Bleiben Sie auf dem Laufenden über die schnelllebige Hacking-Welt durch Echtzeitnachrichten und Einblicke

Neueste Ankündigungen
Bleiben Sie informiert über die neuesten Bug-Bounties und wichtige Plattform-Updates

Treten Sie uns auf Discord bei und beginnen Sie noch heute mit den besten Hackern zusammenzuarbeiten!

Grundinformationen

MongoDB ist ein Open-Source-Datenbankmanagementsystem, das ein dokumentenorientiertes Datenbankmodell verwendet, um verschiedene Datenformen zu verarbeiten. Es bietet Flexibilität und Skalierbarkeit für die Verwaltung unstrukturierter oder semi-strukturierter Daten in Anwendungen wie Big Data-Analysen und Content-Management. Standardport: 27017, 27018

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

Aufzählung

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

Login

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 wird überprüfen, ob Anmeldeinformationen benötigt werden.

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

Brute force

Schauen Sie in /opt/bitnami/mongodb/mongodb.conf hinein, um zu erfahren, ob Anmeldeinformationen benötigt werden:

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, hier ist, wie wir eine tatsächliche Object ID, die von einer Anwendung zurückgegeben wird, zerlegen können: 5f2459ac9fa6dc2500314019

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

Von den oben genannten Elementen bleibt der Maschinenidentifikator so lange gleich, 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, indem man einfach die Zähler- und Zeitstempelwerte inkrementiert, ist die Tatsache, dass Mongo DB Object IDs generiert und auf Systemebene zuweist.

Das Tool https://github.com/andresriancho/mongo-objectid-predict, gegeben eine Start-Object ID (Sie können ein Konto erstellen und eine Start-ID erhalten), sendet etwa 1000 wahrscheinliche Object IDs zurück, die möglicherweise den nächsten Objekten zugewiesen worden sein könnten, sodass Sie sie nur bruteforcen müssen.

Post

Wenn Sie root sind, können Sie die mongodb.conf Datei ändern, sodass keine Anmeldeinformationen benötigt werden (noauth = true) und Sie sich ohne Anmeldeinformationen anmelden können.


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

Hacking Einblicke
Engagieren Sie sich mit Inhalten, die in den Nervenkitzel und die Herausforderungen des Hackens eintauchen

Echtzeit-Hack-Nachrichten
Bleiben Sie auf dem Laufenden mit der schnelllebigen Hack-Welt durch Echtzeit-Nachrichten und Einblicke

Neueste Ankündigungen
Bleiben Sie informiert über die neuesten Bug-Bounties und wichtige Plattform-Updates

Treten Sie uns bei Discord und beginnen Sie noch heute mit den besten Hackern zusammenzuarbeiten!

{% hint style="success" %} Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks unterstützen
{% endhint %}