7.4 KiB
27017,27018 - Pentesting MongoDB
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Join HackenProof Discord server to communicate with experienced hackers and bug bounty hunters!
Hacking Insights
Engage with content that delves into the thrill and challenges of hacking
Real-Time Hack News
Keep up-to-date with fast-paced hacking world through real-time news and insights
Latest Announcements
Stay informed with the newest bug bounties launching and crucial platform updates
Join us on Discord and start collaborating with top hackers today!
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
Automatic
nmap -sV --script "mongo* and default" -p 27017 <IP> #By default all the nmap mongo enumerate scripts are used
Shodan
- Tutti i mongodb:
"mongodb server information"
- Cerca server mongodb completamente aperti:
"mongodb server information" -"partially enabled"
- Solo autenticazione parzialmente abilitata:
"mongodb server information" "partially enabled"
Login
Per impostazione predefinita, 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 credenziali.
nmap -n -sV --script mongodb-brute -p 27017 <ip>
Brute force
Controlla dentro /opt/bitnami/mongodb/mongodb.conf per sapere se sono necessarie 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 dell'Objectid di Mongo
Esempio da qui.
Gli ID Object di Mongo sono stringhe esadecimali di 12 byte:
Ad esempio, ecco come possiamo analizzare un ID Object reale restituito da un'applicazione: 5f2459ac9fa6dc2500314019
- 5f2459ac: 1596217772 in decimale = Venerdì, 31 Luglio 2020 17:49:32
- 9fa6dc: Identificatore della macchina
- 2500: ID del processo
- 314019: Un contatore incrementale
Dei suddetti elementi, l'identificatore della macchina rimarrà lo stesso finché il database sta eseguendo la stessa macchina fisica/virtuale. L'ID del processo cambierà solo se il processo MongoDB viene riavviato. Il timestamp verrà aggiornato ogni secondo. L'unica sfida nel prevedere gli ID Object semplicemente incrementando i valori del contatore e del timestamp, è il fatto che Mongo DB genera ID Object e assegna ID Object a livello di sistema.
Lo strumento https://github.com/andresriancho/mongo-objectid-predict, dato un ID Object di partenza (puoi creare un account e ottenere un ID di partenza), restituisce circa 1000 probabili ID Object che potrebbero essere stati assegnati ai prossimi oggetti, quindi devi solo forzarli.
Post
Se sei root puoi modificare il file mongodb.conf in modo che non siano necessarie credenziali (noauth = true) e accedere senza credenziali.
Unisciti al server HackenProof Discord per comunicare con hacker esperti e cacciatori di bug bounty!
Approfondimenti sul hacking
Interagisci con contenuti che approfondiscono l'emozione e le sfide dell'hacking
Notizie di hacking in tempo reale
Rimani aggiornato con il mondo dell'hacking in rapida evoluzione attraverso notizie e approfondimenti in tempo reale
Ultimi annunci
Rimani informato sulle nuove bug bounty in arrivo e sugli aggiornamenti cruciali della piattaforma
Unisciti a noi su Discord e inizia a collaborare con i migliori hacker oggi!
{% hint style="success" %}
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.