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
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
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:
Zum Beispiel, hier ist, wie wir eine tatsächliche Object ID, die von einer Anwendung zurückgegeben wird, zerlegen können: 5f2459ac9fa6dc2500314019
- 5f2459ac: 1596217772 in Dezimal = Freitag, 31. Juli 2020 17:49:32
- 9fa6dc: Maschinenidentifikator
- 2500: Prozess-ID
- 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
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.