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

132 lines
7.7 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>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
* Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="../.gitbook/assets/image (7) (2).png" alt=""><figcaption></figcaption></figure>
2022-11-05 09:07:43 +00:00
2023-06-03 13:10:46 +00:00
[**Suivez HackenProof**](https://bit.ly/3xrrDrL) **pour en savoir plus sur les bugs web3**
2023-02-27 09:28:45 +00:00
2023-06-03 13:10:46 +00:00
🐞 Lisez les tutoriels de bugs web3
2023-02-27 09:28:45 +00:00
2023-06-03 13:10:46 +00:00
🔔 Recevez des notifications sur les nouveaux programmes de primes de bugs
2023-02-27 09:28:45 +00:00
2023-06-03 13:10:46 +00:00
💬 Participez aux discussions de la communauté
2022-11-05 09:07:43 +00:00
2023-06-03 13:10:46 +00:00
## Informations de base
2023-06-03 13:10:46 +00:00
MongoDB est un système de gestion de base de données (SGBD) open source qui utilise un modèle de base de données orienté document qui prend en charge diverses formes de données. (De [ici](https://searchdatamanagement.techtarget.com/definition/MongoDB))
2023-06-03 13:10:46 +00:00
**Port par défaut :** 27017, 27018
```
PORT STATE SERVICE VERSION
27017/tcp open mongodb MongoDB 2.6.9 2.6.9
```
2023-06-03 13:10:46 +00:00
## Énumération
2023-06-03 13:10:46 +00:00
### Manuel
```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:
print(db)
print(client[db["name"]].list_collection_names())
#If admin access, you could dump the database also
```
2023-06-03 13:10:46 +00:00
**Quelques commandes MongoDB :**
```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
```
2023-06-03 13:10:46 +00:00
### Automatique
```bash
nmap -sV --script "mongo* and default" -p 27017 <IP> #By default all the nmap mongo enumerate scripts are used
```
2022-05-01 13:25:53 +00:00
### Shodan
2023-06-03 13:10:46 +00:00
* Tous les mongodb: `"informations sur le serveur mongodb"`
* Recherche de serveurs mongodb ouverts complets: `"informations sur le serveur mongodb" -"partiellement activé"`
* Activation partielle de l'authentification: `"informations sur le serveur mongodb" "partiellement activé"`
2023-06-03 13:10:46 +00:00
## Connexion
2023-06-03 13:10:46 +00:00
Par défaut, mongo ne nécessite pas de mot de passe.\
**Admin** est une base de données mongo courante.
```bash
mongo <HOST>
mongo <HOST>:<PORT>
mongo <HOST>:<PORT>/<DB>
mongo <database> -u <username> -p '<password>'
```
2023-06-03 13:10:46 +00:00
Le script nmap: _**mongodb-brute**_ vérifiera si des identifiants sont nécessaires.
```bash
nmap -n -sV --script mongodb-brute -p 27017 <ip>
```
2022-05-01 13:25:53 +00:00
### [**Brute force**](../generic-methodologies-and-resources/brute-force.md#mongo)
2023-06-03 13:10:46 +00:00
Regardez à l'intérieur de _/opt/bitnami/mongodb/mongodb.conf_ pour savoir si des identifiants sont nécessaires:
```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
```
2023-06-03 13:10:46 +00:00
## Prédiction d'Objectid Mongo
2023-06-03 13:10:46 +00:00
Les identifiants d'objets Mongo sont des chaînes hexadécimales de **12 octets** :
![](../.gitbook/assets/id-and-objectids-in-mongodb.png)
2023-06-03 13:10:46 +00:00
Par exemple, voici comment nous pouvons disséquer un véritable Object ID renvoyé par une application : 5f2459ac9fa6dc2500314019
2023-06-03 13:10:46 +00:00
1. 5f2459ac : 1596217772 en décimal = vendredi 31 juillet 2020 17:49:32
2. 9fa6dc : Identificateur de machine
3. 2500 : ID de processus
4. 314019 : Un compteur incrémentiel
2023-06-03 13:10:46 +00:00
Parmi les éléments ci-dessus, l'identificateur de machine restera le même tant que la base de données exécutera la même machine physique/virtuelle. L'ID de processus ne changera que si le processus MongoDB est redémarré. L'horodatage sera mis à jour toutes les secondes. Le seul défi pour deviner les Object IDs en incrémentant simplement les valeurs de compteur et d'horodatage est le fait que Mongo DB génère des Object IDs et attribue des Object IDs au niveau du système.
2023-06-03 13:10:46 +00:00
L'outil [https://github.com/andresriancho/mongo-objectid-predict](https://github.com/andresriancho/mongo-objectid-predict), étant donné un Object ID de départ (vous pouvez créer un compte et obtenir un ID de départ), renvoie environ 1000 Object IDs probables qui auraient pu être attribués aux objets suivants, vous n'avez donc plus qu'à les bruteforcer.
2022-05-01 13:25:53 +00:00
## Post
2023-06-03 13:10:46 +00:00
Si vous êtes root, vous pouvez **modifier** le fichier **mongodb.conf** pour qu'aucun identifiant ne soit nécessaire (_noauth = true_) et **vous connecter sans identifiants**.
2022-04-28 16:01:33 +00:00
<figure><img src="../.gitbook/assets/image (7) (2).png" alt=""><figcaption></figcaption></figure>
2023-03-05 19:54:13 +00:00
2023-06-03 13:10:46 +00:00
[**Suivez HackenProof**](https://bit.ly/3xrrDrL) **pour en savoir plus sur les bugs web3**
2023-02-27 09:28:45 +00:00
2023-06-03 13:10:46 +00:00
🐞 Lisez les tutoriels sur les bugs web3
2023-02-27 09:28:45 +00:00
2023-06-03 13:10:46 +00:00
🔔 Soyez informé des nouveaux programmes de primes pour bugs
2023-02-27 09:28:45 +00:00
2023-06-03 13:10:46 +00:00
💬 Participez aux discussions de la communauté
2022-11-05 09:07:43 +00:00
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>