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:
- Se vuoi vedere la tua azienda pubblicizzata su HackTricks o scaricare HackTricks in PDF Controlla i PIANI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri La Famiglia PEASS, la nostra collezione di NFT esclusivi
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @carlospolopm.
- Condividi i tuoi trucchi di hacking inviando PR a HackTricks e HackTricks Cloud repos di github.
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:
Ad esempio, ecco come possiamo analizzare un effettivo ID oggetto restituito da un'applicazione: 5f2459ac9fa6dc2500314019
- 5f2459ac: 1596217772 in decimale = Venerdì, 31 Luglio 2020 17:49:32
- 9fa6dc: Identificatore Macchina
- 2500: ID Processo
- 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:
- Se vuoi vedere la tua azienda pubblicizzata in HackTricks o scaricare HackTricks in PDF Controlla i PIANI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale PEASS & HackTricks
- Scopri The PEASS Family, la nostra collezione di esclusive NFT
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @carlospolopm.
- Condividi i tuoi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.