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

7.5 KiB

27017,27018 - Pentesting MongoDB

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Pridružite se HackenProof Discord serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove!

Hakerski Uvidi
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja

Vesti o Hakovanju u Realnom Vremenu
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu

Poslednje Najave
Budite informisani o najnovijim nagradama za pronalaženje bagova i važnim ažuriranjima platformi

Pridružite nam se na Discord-u i počnite da sarađujete sa vrhunskim hakerima danas!

Osnovne Informacije

MongoDB je open source sistem za upravljanje bazama podataka koji koristi model baze podataka orijentisan na dokumente za obradu različitih oblika podataka. Nudi fleksibilnost i skalabilnost za upravljanje nestrukturiranim ili polu-strukturiranim podacima u aplikacijama poput analitike velikih podataka i upravljanja 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

Neke MongoDB komande:

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

Automatsko

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

Shodan

  • Svi mongodb: "informacije o mongodb serveru"
  • Pretražite potpuno otvorene mongodb servere: "informacije o mongodb serveru" -"delimično omogućeno"
  • Samo delimično omogućena autentifikacija: "informacije o mongodb serveru" "delimično omogućeno"

Prijava

Podrazumevano, mongo ne zahteva lozinku.
Admin je česta 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 potrebni pristupni podaci.

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

Brute force

Pogledajte unutar /opt/bitnami/mongodb/mongodb.conf da biste saznali da li su potrebni pristupni podaci:

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

Predviđanje Mongo Objectid-a

Primer ovde.

Mongo Object ID-ovi su 12-bajtni heksadecimalni stringovi:

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

Na primer, evo kako možemo razložiti stvarni Object ID koji je vraćen od strane aplikacije: 5f2459ac9fa6dc2500314019

  1. 5f2459ac: 1596217772 u decimalnom sistemu = Petak, 31. jul 2020. 17:49:32
  2. 9fa6dc: Identifikator mašine
  3. 2500: ID procesa
  4. 314019: Inkrementalni brojač

Od navedenih elemenata, identifikator mašine će ostati isti dok god baza podataka radi na istoj fizičkoj/virtualnoj mašini. ID procesa će se promeniti samo ako se proces MongoDB 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 ih na nivou sistema.

Alat https://github.com/andresriancho/mongo-objectid-predict, uzimajući početni Object ID (možete kreirati 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 trebate probati metodom "brute force".

Post

Ako ste root, možete modifikovati fajl mongodb.conf tako da ne budu potrebne akreditacije (noauth = true) i prijaviti se bez akreditacija.


Pridružite se HackenProof Discord serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove!

Hakerski Uvidi
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja

Vesti o Hakovanju u Realnom Vremenu
Budite u toku sa dinamičnim svetom hakovanja kroz vesti i uvide u realnom vremenu

Najnovije Najave
Budite informisani o najnovijim programima nagrađivanja za pronalaženje bagova i važnim ažuriranjima platforme

Pridružite nam se na Discord-u i počnite da sarađujete sa vrhunskim hakerima danas!

Naučite hakovanje AWS-a od početnika do stručnjaka sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u: