27017,27018 - Pentesting MongoDB
Tip
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)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite 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.
Osnovne informacije
MongoDB je sistem za upravljanje bazama podataka otvorenog koda koji koristi model baze podataka orijentisan na dokumente za rukovanje različitim 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čna
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 naredbe:
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
- Svi mongodb:
"mongodb server information" - Pretraži potpuno otvorene mongodb servere:
"mongodb server information" -"partially enabled" - Samo delimično omogućena auth:
"mongodb server information" "partially enabled"
Prijava
Po podrazumevanom 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 creds potrebni.
nmap -n -sV --script mongodb-brute -p 27017 <ip>
Brute force
Pogledaj u /opt/bitnami/mongodb/mongodb.conf da bi saznao 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
Mongo Objectid Predict
Primer from here.
Mongo Object IDs su 12-bajtni heksadecimalni stringovi:

Na primer, ovako možemo rastaviti stvarni Object ID koji vraća aplikacija: 5f2459ac9fa6dc2500314019
- 5f2459ac: 1596217772 u dekadnom = petak, 31. jul 2020. 17:49:32
- 9fa6dc: Identifikator mašine
- 2500: ID procesa
- 314019: Inkrementalni brojač
Od gore navedenih elemenata, identifikator mašine će ostati isti dok baza podataka radi na istoj fizičkoj/virtuelnoj mašini. ID procesa će se promeniti samo ako se MongoDB proces restartuje. Timestamp će se ažurirati svake sekunde. Jedini izazov u pogađanju Object ID-ja jednostavnim inkrementiranjem vrednosti brojača i timestampa je činjenica da MongoDB generiše i dodeljuje Object ID-je na nivou sistema.
Alat https://github.com/andresriancho/mongo-objectid-predict, ako mu date početni Object ID (možete napraviti nalog i dobiti početni ID), vraća oko 1000 verovatnih Object ID-ja koji bi mogli biti dodeljeni narednim objektima, pa ih samo treba bruteforce-ovati.
Post
Ako ste root možete izmeniti fajl mongodb.conf tako da ne budu potrebne kredencijale (noauth = true) i prijaviti se bez kredencijala.
MongoBleed zlib Memory Disclosure (CVE-2025-14847)
Široko rasprostranjeno neautentifikovano otkrivanje memorije (“MongoBleed”) pogađa MongoDB 3.6–8.2 kada je omogućен zlib network compressor. Zaglavlje OP_COMPRESSED veruje attacker-supplied uncompressedSize, pa server alocira bafer te veličine i kopira ga nazad u odgovore iako je dostavljen samo mnogo manji kompresovani payload. Dodatni bajtovi su neinicijalizovani heap podaci iz drugih konekcija, /proc, ili WiredTiger cache-a. Napadači zatim izostave očekivani BSON \x00 terminator, pa MongoDB-ov parser nastavlja da skenira taj preveliki bafer dok ne nađe terminator, a odgovor na grešku odražava i zlonamerni dokument i skenirane heap bajtove pre-auth na TCP/27017.
Zahtevi izloženosti & brze provere
- Verzija servera mora biti u jednoj od ranjivih verzija (3.6, 4.0, 4.2, 4.4.0–4.4.29, 5.0.0–5.0.31, 6.0.0–6.0.26, 7.0.0–7.0.27, 8.0.0–8.0.16, 8.2.0–8.2.2).
net.compression.compressorsilinetworkMessageCompressorsmoraju uključivatizlib(podrazumevano na mnogim build-ovima). Proverite iz shell-a sa:
db.adminCommand({getParameter: 1, networkMessageCompressors: 1})
- Napadaču je dovoljan samo mrežni pristup MongoDB portu. Autentikacija nije potrebna.
Exploitation & harvesting workflow
- Inicirajte wire-protocol handshake oglašavajući
compressors:["zlib"]tako da sesija koristi zlib. - Pošaljite
OP_COMPRESSEDfrejmove čiji deklarisaniuncompressedSizeje daleko veći od stvarnog dekompresovanog payload-a kako biste primorali preveliku heap alokaciju punu starih podataka. - Kreirajte ugrađeni BSON without a final
\x00tako da parser pređe preko podataka koje kontroliše napadač u preveliki bafer dok traži terminator. - MongoDB emituje grešku koja uključuje originalnu poruku plus sve bajtove iz heapa koji su skenirani, leaking memory. Ponavljajte sa različitim dužinama/offsetima da biste agregirali tajne (creds/API keys/session tokens), WiredTiger stats i
/procartefakte.
The public PoC automates the probing offsets and carving of the returned fragments:
python3 mongobleed.py --host <target> --max-offset 50000 --output leaks.bin
Signal buke detekcije (povećana stopa konekcija)
Napad obično generiše mnogo kratkotrajnih zahteva. Pratite nagle poraste dolaznih konekcija prema mongod/mongod.exe. Primer XQL hunt (>500 konekcija/min po udaljenom IP, podrazumevano isključujući RFC1918/loopback/link-local/mcast/broadcast/reserved opsege):
Cortex XQL visokobrzinske Mongo konekcije
```sql // High-velocity inbound connections to mongod/mongod.exe (possible MongoBleed probing)dataset = xdr_data | filter event_type = ENUM.NETWORK | filter lowercase(actor_process_image_name) in (“mongod”, “mongod.exe”) | filter action_network_is_server = true | filter action_remote_ip not in (null, “”) | filter incidr(action_remote_ip, “10.0.0.0/8”) != true and incidr(action_remote_ip, “192.168.0.0/16”) != true and incidr(action_remote_ip, “172.16.0.0/12”) != true and incidr(action_remote_ip, “127.0.0.0/8”) != true and incidr(action_remote_ip, “169.254.0.0/16”) != true and incidr(action_remote_ip, “224.0.0.0/4”) != true and incidr(action_remote_ip, “255.255.255.255/32”) != true and incidr(action_remote_ip, “198.18.0.0/15”) != true | filter action_network_session_duration <= 5000 | bin _time span = 1m | comp count(_time) as Counter by agent_hostname, action_remote_ip, _time | filter Counter >= 500
</details>
## Izvori
- [Unit 42 – Izveštaj o pretnji: MongoDB ranjivost (CVE-2025-14847)](https://unit42.paloaltonetworks.com/mongobleed-cve-2025-14847/)
- [Tenable – CVE-2025-14847 (MongoBleed): MongoDB Memory Leak Ranjivost iskorišćena u prirodi](https://www.tenable.com/blog/cve-2025-14847-mongobleed-mongodb-memory-leak-vulnerability-exploited-in-the-wild)
- [MongoDB Bezbednosno saopštenje SERVER-115508](https://jira.mongodb.org/browse/SERVER-115508)
- [Censys – MongoBleed saopštenje](https://censys.com/advisory/cve-2025-14847)
- [MongoBleed PoC (joe-desimone/mongobleed)](https://github.com/joe-desimone/mongobleed)
---
> [!TIP]
> Učite i vežbajte AWS Hacking:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Učite i vežbajte GCP Hacking: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
> Učite i vežbajte Azure Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://training.hacktricks.xyz/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>Podržite HackTricks</summary>
>
> - Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
> - **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
>
> </details>


