7.3 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!
Basic Information
MongoDB je open source sistem za upravljanje bazama podataka koji koristi model baze podataka orijentisan na dokumente za upravljanje raznovrsnim oblicima podataka. Pruža fleksibilnost i skalabilnost za upravljanje nestrukturiranim ili polustrukturiranim podacima u aplikacijama kao što su analitika velikih podataka i upravljanje sadržajem. Podrazumevani port: 27017, 27018
PORT STATE SERVICE VERSION
27017/tcp open mongodb MongoDB 2.6.9 2.6.9
Enumeracija
Ručno
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
Neki MongoDB komandi:
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
Automatski
nmap -sV --script "mongo* and default" -p 27017 <IP> #By default all the nmap mongo enumerate scripts are used
Shodan
- Sve mongodb:
"mongodb server information"
- Pretraži potpuno otvorene mongodb servere:
"mongodb server information" -"partially enabled"
- Samo delimično omogućena autentifikacija:
"mongodb server information" "partially enabled"
Prijava
Po defaultu, mongo ne zahteva lozinku.
Admin je uobičajena mongo baza podataka.
mongo <HOST>
mongo <HOST>:<PORT>
mongo <HOST>:<PORT>/<DB>
mongo <database> -u <username> -p '<password>'
Nmap skripta: mongodb-brute će proveriti da li su potrebne kredencijale.
nmap -n -sV --script mongodb-brute -p 27017 <ip>
Brute force
Pogledajte unutar /opt/bitnami/mongodb/mongodb.conf da biste saznali da li su potrebne akreditive:
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
Predikcija Mongo Objectid
Primer odavde.
Mongo Object ID su 12-bajtni heksadecimalni stringovi:
Na primer, ovako možemo analizirati stvarni Object ID koji je vratio aplikacija: 5f2459ac9fa6dc2500314019
- 5f2459ac: 1596217772 u decimalnom = Petak, 31. jul 2020. 17:49:32
- 9fa6dc: Identifikator mašine
- 2500: ID procesa
- 314019: Inkrementalni brojač
Od navedenih elemenata, identifikator mašine će ostati isti sve dok baza podataka radi na istoj fizičkoj/virtuelnoj mašini. ID procesa će se promeniti samo ako se MongoDB proces ponovo pokrene. Vremenska oznaka će se ažurirati svake sekunde. Jedini izazov u pogađanju Object ID-ova jednostavnim inkrementiranjem vrednosti brojača i vremenske oznake je činjenica da Mongo DB generiše Object ID-ove i dodeljuje Object ID-ove na sistemskom nivou.
Alat https://github.com/andresriancho/mongo-objectid-predict, uz datu početnu Object ID (možete napraviti nalog i dobiti početni ID), vraća oko 1000 verovatnih Object ID-ova koji bi mogli biti dodeljeni sledećim objektima, tako da ih samo treba bruteforce-ovati.
Post
Ako ste root, možete modifikovati mongodb.conf fajl tako da nisu potrebne kredencijale (noauth = true) i prijaviti se bez kredencijala.
Pridružite se HackenProof Discord serveru da komunicirate sa iskusnim hakerima i lovcima na greške!
Hacking Insights
Uključite se u sadržaj koji se bavi uzbuđenjem i izazovima hakovanja
Real-Time Hack News
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu
Latest Announcements
Budite informisani o najnovijim nagradama za greške i važnim ažuriranjima platformi
Pridružite nam se na Discord i počnite da sarađujete sa vrhunskim hakerima danas!
{% hint style="success" %}
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podrška HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.