Sploitus

Exploit for mongobleed-scanner

kitploit · 2026-08-24

Exploit Code

MARKDOWN89 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-BLACK1HP-MONGOBLEED-SCANNER
# MongoBleed (CVE-2025-14847)

MongoBleed è uno scanner PoC ad alte prestazioni per CVE-2025-14847, una vulnerabilità di divulgazione di memoria heap pre-autenticazione nel driver C++ di MongoDB. Lo strumento è progettato per l'identificazione rapida di istanze vulnerabili su ampi intervalli di rete.

## Analisi Tecnica

La vulnerabilità deriva da una lettura fuori dai limiti (OOB) nella gestione dei messaggi `OP_COMPRESSED` da parte del protocollo wire di MongoDB.

Quando un server riceve un pacchetto `OP_COMPRESSED`, si basa sul campo `uncompressedSize` fornito dall'attaccante per allocare un buffer per la decompressione. Se i dati decompressi effettivi sono significativamente più piccoli della `uncompressedSize` dichiarata, il driver non tronca né cancella il buffer. Di conseguenza, il server restituisce l'intero blocco di memoria allocato, che può contenere dati heap non inizializzati, esponendo potenzialmente informazioni sensibili come token di sessione, puntatori interni o frammenti di altre query del database.

## Caratteristiche

  * I/O asincrono utilizzando Python `asyncio` per scansione ad alta concorrenza
  * Rilevamento preciso tramite validazione della lunghezza della risposta rispetto alla dimensione di leak richiesta
  * Falsi positivi minimi grazie a interazione verificata a livello di protocollo
  * Registrazione automatica dei target vulnerabili in `vulnerable_targets.txt`



## Installazione

root@kitploit:~
    
    
    git clone https://github.com/Black1hp/mongobleed-scanner/
    cd mongobleed-scanner
    

Nessuna dipendenza esterna richiesta (solo libreria standard Python).

## Utilizzo

Utilizzo base:

root@kitploit:~
    
    
    python3 mongobleed.py -i targets.txt
    

Configurazione avanzata:

root@kitploit:~
    
    
    python3 mongobleed.py -i targets.txt -c 100 -t 5
    

### Opzioni

  * `-i` : File di input contenente i target (IP, dominio o IP:porta)
  * `-c` : Livello di concorrenza (default: 50)
  * `-t` : Timeout di connessione in secondi (default: 5)



## Logica di Rilevamento

Lo scanner identifica la vulnerabilità sfruttando una discrepanza di dimensioni durante la fase di decompressione BSON:

  1. Lo scanner invia un pacchetto `OP_COMPRESSED` appositamente costruito contenente un piccolo payload compresso con zlib, ad esempio 16-30 byte .
  2. Il campo `uncompressedSize` nell'intestazione del pacchetto è impostato intenzionalmente a un valore molto più grande (es., 64KB).
  3. Uno stato **VULNERABILE** è confermato se il server MongoDB risponde con un `MessageLength` che corrisponde alla grande dimensione del buffer richiesto piuttosto che alla dimensione effettiva del payload decompresso.
  4. Il server utilizza fiduciosamente la `uncompressedSize` fornita dall'attaccante per definire la lunghezza della risposta. Poiché non aggiorna questa lunghezza con i byte effettivi scritti durante la decompressione, trasmette ciecamente l'intero buffer heap allocato—inclusa la memoria non inizializzata—di nuovo al client.
  5. Lo scanner convalida la risposta leggendo i byte extra dal flusso, che rappresentano frammenti non inizializzati della memoria heap del server.



## Prova di Concetto

Il tuo browser non supporta il tag video. 

> **Nota:** Il video sopra dimostra lo scanner che identifica più istanze vulnerabili e cattura frammenti di heap in tempo reale.

## Autore

**Black1hp** Ricercatore di Sicurezza | Cacciatore di Bug | Red Teamer

  * GitHub: https://github.com/black1hp
  * X (Twitter): https://x.com/black1hp
  * Medium: https://medium.com/@black1hp
  * LinkedIn: https://www.linkedin.com/in/black1hp/



## Disclaimer

Questo strumento è destinato esclusivamente a test di sicurezza autorizzati e scopi di ricerca. L'autore non è responsabile per qualsiasi uso non autorizzato o danno derivante da questo strumento.