mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 14:40:37 +00:00
133 lines
6.8 KiB
Markdown
133 lines
6.8 KiB
Markdown
# 27017,27018 - Pentesting MongoDB
|
|
|
|
<details>
|
|
|
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
|
|
|
Autres façons de soutenir HackTricks:
|
|
|
|
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF** Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
|
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
|
|
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) pour communiquer avec des hackers expérimentés et des chasseurs de primes en bugs !
|
|
|
|
**Perspectives de piratage**\
|
|
Engagez-vous avec du contenu qui explore le frisson et les défis du piratage
|
|
|
|
**Actualités de piratage en temps réel**\
|
|
Restez informé du monde du piratage rapide grâce aux actualités et aux informations en temps réel
|
|
|
|
**Dernières annonces**\
|
|
Restez informé des dernières primes de bugs lancées et des mises à jour cruciales de la plateforme
|
|
|
|
**Rejoignez-nous sur** [**Discord**](https://discord.com/invite/N3FrSbmwdy) et commencez à collaborer avec les meilleurs hackers dès aujourd'hui !
|
|
|
|
## Informations de base
|
|
|
|
**MongoDB** est un système de gestion de base de données **open source** qui utilise un **modèle de base de données orienté documents** pour gérer diverses formes de données. Il offre une flexibilité et une évolutivité pour gérer des données non structurées ou semi-structurées dans des applications telles que l'analyse de données volumineuses et la gestion de contenu. **Port par défaut :** 27017, 27018
|
|
```
|
|
PORT STATE SERVICE VERSION
|
|
27017/tcp open mongodb MongoDB 2.6.9 2.6.9
|
|
```
|
|
## Énumération
|
|
|
|
### 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
|
|
```
|
|
**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
|
|
```
|
|
### Automatique
|
|
```bash
|
|
nmap -sV --script "mongo* and default" -p 27017 <IP> #By default all the nmap mongo enumerate scripts are used
|
|
```
|
|
### Shodan
|
|
|
|
* Tous les mongodb : `"informations sur le serveur mongodb"`
|
|
* Recherchez les serveurs mongodb entièrement ouverts : `"informations sur le serveur mongodb" -"partiellement activé"`
|
|
* Autorisation partiellement activée uniquement : `"informations sur le serveur mongodb" "partiellement activé"`
|
|
|
|
## Connexion
|
|
|
|
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>'
|
|
```
|
|
Le script nmap : _**mongodb-brute**_ vérifiera si des identifiants sont nécessaires.
|
|
```bash
|
|
nmap -n -sV --script mongodb-brute -p 27017 <ip>
|
|
```
|
|
### [**Brute force**](../generic-methodologies-and-resources/brute-force.md#mongo)
|
|
|
|
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
|
|
```
|
|
## Prédiction de l'Objectid Mongo
|
|
|
|
Exemple [ici](https://techkranti.com/idor-through-mongodb-object-ids-prediction/).
|
|
|
|
Les ID d'objets Mongo sont des chaînes hexadécimales de **12 octets**:
|
|
|
|
![http://techidiocy.com/\_id-objectid-in-mongodb/](../.gitbook/assets/id-and-ObjectIds-in-MongoDB.png)
|
|
|
|
Par exemple, voici comment nous pouvons disséquer un ID d'objet réel retourné par une application: 5f2459ac9fa6dc2500314019
|
|
|
|
1. 5f2459ac: 1596217772 en décimal = Vendredi, 31 Juillet 2020 17:49:32
|
|
2. 9fa6dc: Identifiant de la machine
|
|
3. 2500: ID de processus
|
|
4. 314019: Un compteur incrémentiel
|
|
|
|
Parmi les éléments ci-dessus, l'identifiant de la machine restera le même tant que la base de données fonctionne sur 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 chaque seconde. Le seul défi pour deviner les ID d'objets en incrémentant simplement les valeurs de compteur et d'horodatage est le fait que Mongo DB génère des ID d'objets et attribue des ID d'objets au niveau du système.
|
|
|
|
L'outil [https://github.com/andresriancho/mongo-objectid-predict](https://github.com/andresriancho/mongo-objectid-predict), étant donné un ID d'objet de départ (vous pouvez créer un compte et obtenir un ID de départ), renvoie environ 1000 ID d'objets probables qui auraient pu être attribués aux objets suivants, vous n'avez donc qu'à les bruteforcer.
|
|
|
|
## Post
|
|
|
|
Si vous êtes root, vous pouvez **modifier** le fichier **mongodb.conf** pour qu'aucun identifiant n'est nécessaire (_noauth = true_) et **vous connecter sans identifiants**.
|
|
|
|
***
|
|
|
|
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) pour communiquer avec des hackers expérimentés et des chasseurs de primes en sécurité !
|
|
|
|
**Perspectives de Hacking**\
|
|
Engagez-vous avec du contenu qui explore le frisson et les défis du hacking
|
|
|
|
**Actualités de Hacking en Temps Réel**\
|
|
Restez à jour avec le monde du hacking à rythme rapide grâce aux actualités et aux perspectives en temps réel
|
|
|
|
**Dernières Annonces**\
|
|
Restez informé des dernières primes de bugs lancées et des mises à jour cruciales de la plateforme
|
|
|
|
**Rejoignez-nous sur** [**Discord**](https://discord.com/invite/N3FrSbmwdy) et commencez à collaborer avec les meilleurs hackers dès aujourd'hui!
|