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

269 lines
25 KiB
Markdown
Raw Normal View History

2022-04-28 23:27:22 +00:00
# 27017,27018 - Pentesting MongoDB
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 15:36:32 +00:00
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 15:36:32 +00:00
Andere Möglichkeiten, HackTricks zu unterstützen:
2024-01-03 10:42:55 +00:00
2024-02-10 15:36:32 +00:00
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories senden.
2022-04-28 16:01:33 +00:00
</details>
2023-12-04 15:45:05 +00:00
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
2023-02-27 09:28:45 +00:00
2024-02-10 15:36:32 +00:00
Treten Sie dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!
2023-02-27 09:28:45 +00:00
2023-12-04 15:45:05 +00:00
**Hacking Insights**\
2024-02-10 15:36:32 +00:00
Beschäftigen Sie sich mit Inhalten, die sich mit dem Nervenkitzel und den Herausforderungen des Hackens befassen.
2023-02-27 09:28:45 +00:00
2024-02-10 15:36:32 +00:00
**Echtzeit-Hack-News**\
Bleiben Sie mit der schnelllebigen Hacking-Welt durch Echtzeit-Nachrichten und Einblicke auf dem Laufenden.
2023-07-14 15:03:41 +00:00
2024-02-10 15:36:32 +00:00
**Neueste Ankündigungen**\
Bleiben Sie über die neuesten Bug-Bounties und wichtige Plattformupdates informiert.
2023-07-14 15:03:41 +00:00
2024-02-10 15:36:32 +00:00
**Treten Sie uns auf** [**Discord**](https://discord.com/invite/N3FrSbmwdy) bei und beginnen Sie noch heute mit Top-Hackern zusammenzuarbeiten!
2022-11-05 09:07:43 +00:00
2024-02-10 15:36:32 +00:00
## Grundlegende Informationen
2024-02-10 15:36:32 +00:00
**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
```
2024-02-10 15:36:32 +00:00
### 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:
```bash
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:
```bash
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:
```bash
mongoaudit --host <ziel-ip> --port 27017,27018
```
2024-02-10 15:36:32 +00:00
### Exploitation
2024-02-10 15:36:32 +00:00
#### Nicht authentifizierte MongoDB-Instanzen
2024-02-10 15:36:32 +00:00
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,
```python
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:
2024-02-10 15:36:32 +00:00
print(db)
print(client[db["name"]].list_collection_names())
#If admin access, you could dump the database also
```
2024-02-10 15:36:32 +00:00
**Einige MongoDB-Befehle:**
```bash
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
```
2024-02-10 15:36:32 +00:00
### 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.
2024-02-10 15:36:32 +00:00
##### 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).
```bash
2024-02-10 15:36:32 +00:00
$ telnet <target_ip> 27017
```
2024-02-10 15:36:32 +00:00
##### Nmap
2024-02-10 15:36:32 +00:00
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:
2024-02-10 15:36:32 +00:00
```bash
$ 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:
```bash
$ 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.
```bash
$ hydra -L usernames.txt -P passwords.txt <target_ip> mongodb
```
##### Injection Attacks
2024-02-10 15:36:32 +00:00
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.
2024-02-10 15:36:32 +00:00
```bash
$ 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.
```bash
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.
```bash
mongo <HOST>
mongo <HOST>:<PORT>
mongo <HOST>:<PORT>/<DB>
mongo <database> -u <username> -p '<password>'
```
2024-02-10 15:36:32 +00:00
Das nmap-Skript _**mongodb-brute**_ überprüft, ob Anmeldeinformationen erforderlich sind.
```bash
nmap -n -sV --script mongodb-brute -p 27017 <ip>
```
2024-02-10 15:36:32 +00:00
### [**Brute-Force**](../generic-methodologies-and-resources/brute-force.md#mongo)
2024-02-10 15:36:32 +00:00
Schauen Sie in _/opt/bitnami/mongodb/mongodb.conf_ nach, um herauszufinden, ob Anmeldeinformationen erforderlich sind:
```bash
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
```
2024-02-10 15:36:32 +00:00
## Mongo Objectid Vorhersage
2024-02-10 15:36:32 +00:00
Beispiel [von hier](https://techkranti.com/idor-through-mongodb-object-ids-prediction/).
2024-02-08 21:36:15 +00:00
2024-02-10 15:36:32 +00:00
Mongo Object IDs sind **12-stellige hexadezimale** Zeichenketten:
2024-02-08 21:36:15 +00:00
![http://techidiocy.com/_id-objectid-in-mongodb/](../.gitbook/assets/id-and-objectids-in-mongodb.png)
2024-02-10 15:36:32 +00:00
Hier ist zum Beispiel, wie wir eine tatsächliche Object ID analysieren können, die von einer Anwendung zurückgegeben wird: 5f2459ac9fa6dc2500314019
2024-02-10 15:36:32 +00:00
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
2024-02-10 15:36:32 +00:00
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.
2024-02-10 15:36:32 +00:00
Das Tool [https://github.com/andresriancho/mongo-objectid-predict](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.
2024-02-10 15:36:32 +00:00
## Beitrag
2024-02-10 15:36:32 +00:00
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.
2022-04-28 16:01:33 +00:00
2024-02-08 21:36:15 +00:00
***
2023-12-04 15:45:05 +00:00
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
2023-07-14 15:03:41 +00:00
2024-02-10 15:36:32 +00:00
Treten Sie dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)-Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!
2023-03-05 19:54:13 +00:00
2023-12-04 15:45:05 +00:00
**Hacking Insights**\
2024-02-10 15:36:32 +00:00
Beschäftigen Sie sich mit Inhalten, die sich mit dem Nervenkitzel und den Herausforderungen des Hackens befassen.
2023-02-27 09:28:45 +00:00
2024-02-10 15:36:32 +00:00
**Echtzeit-Hack-News**\
Bleiben Sie mit der schnelllebigen Hacking-Welt durch Echtzeit-Nachrichten und Einblicke auf dem Laufenden.
2023-02-27 09:28:45 +00:00
2024-02-10 15:36:32 +00:00
**Neueste Ankündigungen**\
Bleiben Sie über die neuesten Bug-Bounties und wichtige Plattformupdates informiert.
2023-02-27 09:28:45 +00:00
2024-02-10 15:36:32 +00:00
**Treten Sie uns bei** [**Discord**](https://discord.com/invite/N3FrSbmwdy) bei und beginnen Sie noch heute mit Top-Hackern zusammenzuarbeiten!
2022-11-05 09:07:43 +00:00
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 15:36:32 +00:00
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 15:36:32 +00:00
Andere Möglichkeiten, HackTricks zu unterstützen:
2024-01-03 10:42:55 +00:00
2024-02-10 15:36:32 +00:00
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegramm-Gruppe**](https://t.me/peass) bei oder folgen Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repos senden.
2022-04-28 16:01:33 +00:00
</details>