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

7.6 KiB

27017,27018 - Test di penetrazione su MongoDB

Impara l'hacking su AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!

Altri modi per supportare HackTricks:

Unisciti al server HackenProof Discord per comunicare con hacker esperti e cacciatori di bug bounty!

Approfondimenti sull'Hacking
Coinvolgiti con contenuti che esplorano l'emozione e le sfide dell'hacking

Notizie sull'Hacking in Tempo Reale
Resta aggiornato con il mondo dell'hacking in rapida evoluzione attraverso notizie e approfondimenti in tempo reale

Ultime Comunicazioni
Rimani informato sui nuovi bug bounty in arrivo e sugli aggiornamenti cruciali della piattaforma

Unisciti a noi su Discord e inizia a collaborare con i migliori hacker oggi!

Informazioni di Base

MongoDB è un sistema di gestione di database open source che utilizza un modello di database orientato ai documenti per gestire forme diverse di dati. Offre flessibilità e scalabilità per gestire dati non strutturati o semi-strutturati in applicazioni come analisi di big data e gestione dei contenuti. Porta predefinita: 27017, 27018

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

Enumerazione

Manuale

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

Alcuni comandi MongoDB:

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

Automatico

nmap -sV --script "mongo* and default" -p 27017 <IP> #By default all the nmap mongo enumerate scripts are used

Shodan

  • Tutti i mongodb: "informazioni sul server mongodb"
  • Cerca i server mongodb completamente aperti: "informazioni sul server mongodb" -"parzialmente abilitato"
  • Solo autenticazione parzialmente abilitata: "informazioni sul server mongodb" "parzialmente abilitato"

Accesso

Di default mongo non richiede password.
Admin è un database mongo comune.

mongo <HOST>
mongo <HOST>:<PORT>
mongo <HOST>:<PORT>/<DB>
mongo <database> -u <username> -p '<password>'

Lo script nmap: mongodb-brute verificherà se sono necessarie le credenziali.

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

Brute force

Guarda dentro /opt/bitnami/mongodb/mongodb.conf per sapere se sono necessarie le credenziali:

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

Previsione Mongo Objectid

Esempio da qui.

Gli ID degli oggetti Mongo sono stringhe esadecimali di 12 byte:

http://techidiocy.com/_id-objectid-in-mongodb/

Ad esempio, ecco come possiamo analizzare un effettivo ID oggetto restituito da un'applicazione: 5f2459ac9fa6dc2500314019

  1. 5f2459ac: 1596217772 in decimale = Venerdì, 31 Luglio 2020 17:49:32
  2. 9fa6dc: Identificatore Macchina
  3. 2500: ID Processo
  4. 314019: Un contatore incrementale

Dei suddetti elementi, l'identificatore della macchina rimarrà lo stesso finché il database esegue sulla stessa macchina fisica/virtuale. L'ID del processo cambierà solo se il processo MongoDB viene riavviato. Il timestamp verrà aggiornato ogni secondo. L'unico problema nel tentare di indovinare gli ID oggetto semplicemente incrementando i valori del contatore e del timestamp, è il fatto che Mongo DB genera ID oggetto e assegna ID oggetto a livello di sistema.

Lo strumento https://github.com/andresriancho/mongo-objectid-predict, dato un ID oggetto iniziale (puoi creare un account e ottenere un ID iniziale), restituisce circa 1000 ID oggetto probabili che potrebbero essere stati assegnati agli oggetti successivi, quindi devi solo forzarli.

Post

Se sei root puoi modificare il file mongodb.conf in modo che non siano necessarie credenziali (noauth = true) e effettuare il login senza credenziali.


Unisciti al server HackenProof Discord per comunicare con hacker esperti e cacciatori di bug!

Insight sulle Hacking
Interagisci con contenuti che approfondiscono l'emozione e le sfide dell'hacking

Notizie sull'Hacking in Tempo Reale
Resta aggiornato con il mondo dell'hacking frenetico attraverso notizie e approfondimenti in tempo reale

Ultime Annunci
Rimani informato sui nuovi bug bounty in arrivo e sugli aggiornamenti cruciali della piattaforma

Unisciti a noi su Discord e inizia a collaborare con i migliori hacker oggi!

Impara l'hacking AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks: