
Proof-of-concept exploit in Go per CVE-2025-14847 (MongoBleed), una vulnerabilità di divulgazione della memoria di MongoDB. Crea documenti BSON malformati per far trapelare memoria del server non inizializzata tramite messaggi di errore.
Questo repository contiene un exploit proof-of-concept in Go per CVE-2025-14847, una vulnerabilità di divulgazione di memoria di MongoDB comunemente indicata come Mongobleed.
Questa PoC è una reimplementazione in Go dell'exploit Python originale di Joe Desimone, disponibile qui:
https://github.com/joe-desimone/mongobleed
L'exploit sfrutta un difetto nella decompressione zlib e nel parsing BSON per divulgare memoria non inizializzata da un server MongoDB vulnerabile.
Leggi il post del blog - https://saereya.github.io/posts/mongobleed-cve-2025-14847/
CVE-2025-14847 è causata da una gestione impropria dei messaggi OP_MSG compressi in MongoDB. Creando un documento BSON malformato con una lunghezza del documento gonfiata e avvolgendolo in un messaggio OP_COMPRESSED, il server può leggere oltre i limiti del buffer decompresso.
Ciò può indurre MongoDB a interpretare la memoria residua come nomi di campi BSON, che vengono poi riflessi nei messaggi di errore. Ripetendo questo processo su vari offset si possono divulgare frammenti di memoria del server.
Questa PoC:
OP_COMPRESSED del protocollo wire di MongoDBI dati divulgati vengono estratti da stringhe di errore come:
field name '...'type <n>Questa vulnerabilità interessa specifiche versioni di MongoDB precedenti alla patch ufficiale.
Fare riferimento agli avvisi di sicurezza di MongoDB per gli intervalli di versione esatti.
Compilazione:
go build -o mongobleed
Esecuzione:
./mongobleed --host <target> --port 27017
Flag opzionali: --min-offset: Lunghezza iniziale del documento BSON (predefinito: 20) --max-offset: Lunghezza finale del documento BSON (predefinito: 8192)
[*] MongoBleed - CVE-2025-14847
[*] Targetting localhost:27017
[*] Offset: 20 -> 8192
[+] offset= 117 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
[+] offset= 119 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
[+] offset= 120 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
[+] offset= 121 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
Questo codice è fornito esclusivamente a scopo educativo e di ricerca.
Non eseguire questo strumento contro sistemi che non possiedi o per cui non hai ottenuto esplicita autorizzazione al test. L'uso non autorizzato può essere illegale e non etico.