Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
mongobleed — CVE-2025-14847 spiegazione e lab | Kitploit
Strumenti/GitHubGitHub/adolfbharath/mongobleed
Analisi delle VulnerabilitàSicurezza di ReteCrittografiaApprendimento e FormazioneSicurezza dei DatabaseLab e Pratica
GitHubadolfbharath/mongobleed

mongobleed

CVE-2025-14847 spiegazione e lab

Vedi Repository
17 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Lab di Perdita di Compressione MongoDB (Sicuro, Educativo)

Riferimento CVE : CVE-2025-14847

Questo repository è un laboratorio educativo che dimostra il concetto alla base di una classe di problemi spesso descritti come “compression framing / size-metadata memory disclosure” nei protocolli wire dei database.

È scritto per supportare la comprensione difensiva: come la compressione di rete di MongoDB viene negoziata e incapsulata, perché i campi di dimensione sono importanti e come parser robusti prevengono l'esposizione involontaria di memoria.

Nota sul riferimento CVE: Questo laboratorio è incentrato sull'idea riferita come CVE-2025-14847. Questo repository non convalida, riproduce o sfrutta un bug specifico del fornitore né afferma che una particolare versione di MongoDB sia interessata. Si concentra sulla modalità di fallimento generale (metadati di dimensione non corrispondenti attorno ai payload compressi) e sulle mitigazioni.

Stato della versione (vulnerabile vs corretto)

Questo repository non include (e non dovrebbe essere usato come) prova di quali versioni di MongoDB siano vulnerabili o corrette per un CVE specifico.

Per documentare correttamente le versioni “vulnerabili” vs “corrette” in un report, utilizzare un avviso ufficiale del fornitore / note di rilascio per il CVE e citarlo.

Passi pratici per verificare cosa si sta eseguendo:

  • Versione del container Docker:
    • docker compose exec mongodb mongod --version
    • or docker compose exec mongodb mongosh --quiet --eval "db.version()""
  • Versione dell'installazione host:
    • mongod --version
    • mongosh --quiet --eval "db.version()""

Se condividi il link dell'avviso che stai utilizzando, posso formattare una tabella “Affetto / Corretto” pulita nel README senza indovinare.

Cos'è la vulnerabilità (concettualmente)

Questo laboratorio illustra una modalità di fallimento di compression framing / size-metadata mismatch:

  • I messaggi MongoDB hanno prefisso di lunghezza. Con la compressione di rete, un involucro OP_COMPRESSED aggiunge più campi di dimensione (lunghezza del messaggio esterno, dimensione non compressa dichiarata e lunghezza del messaggio interno).
  • Se un'implementazione fida di uno qualsiasi di questi campi di dimensione senza una convalida rigorosa, può gestire male i buffer durante la decompressione o l'analisi.
  • In implementazioni difettose, ciò può portare a letture fuori limite o alla restituzione di byte di buffer non inizializzati, che è uno dei modi in cui può verificarsi la "divulgazione di memoria".
  • Vedere protocol_overview.md per la descrizione dettagliata del framing.

Dichiarazione etica

  • Questo progetto è non sfruttabile per progettazione.
  • Non include logica armata, codice di exploit o tecniche intese a compromettere sistemi.
  • Dovrebbe essere eseguito solo contro il container Docker locale fornito qui.
  • Non indirizzare questo codice verso sistemi di cui non si è proprietari o per cui non si ha esplicita autorizzazione al test.

Obiettivi di apprendimento

Alla fine del laboratorio, dovresti essere in grado di:

  • Spiegare come funziona a livello generale il wire protocol framing di MongoDB.
  • Descrivere come la compressione di rete zlib viene negoziata e applicata.
  • Comprendere come metadati di lunghezza/dimensione malformati potrebbero concettualmente portare all'esposizione di memoria in un'implementazione difettosa.
  • Identificare mitigazioni pratiche: patch, rafforzamento della configurazione e rilevamento di rete.

Cosa fa (e non fa) questo repository

Fa:

  • Avvia MongoDB in Docker con la compressione zlib abilitata.
  • Utilizza un piccolo client Python originale per:
    • Inviare un hello non compresso includendo compression: ["zlib"]
    • Inviare un messaggio OP_COMPRESSED correttamente incapsulato usando zlib
    • Registrare le dimensioni non compresse vs compresse e un riepilogo delle risposte del server
  • Includere una dimostrazione locale di "toy parser" che mostra come un parser difensivo rifiuta metadati di dimensione non corrispondenti.

Non fa:

  • Costruire pacchetti malevoli per sfruttamento reale.
  • Tentare di aggirare l'autenticazione.
  • Tentare di leggere memoria arbitraria.

Contenuti del repository

  • docker-compose.yml – Avvia un container MongoDB con compressione zlib abilitata ed esposizione solo localhost.
  • protocol_overview.md – Protocollo wire + BSON + flusso di compressione + spiegazione concettuale della vulnerabilità.
  • mitigation.md – Guida alla difesa: patch, configurazione e idee di rilevamento.
  • lab_probe.py – Sonda originale che negozia la compressione e registra le dimensioni dei messaggi in modo sicuro.

Come eseguire il laboratorio in sicurezza

1) Prerequisiti

  • Docker Desktop (o motore Docker compatibile)
  • Python 3.10+ (consigliato)

2) Avviare MongoDB

Dalla directory di questo repository:

root@kitploit:~
docker compose up -d

Confermare che sia in esecuzione:

root@kitploit:~
docker compose ps

3) Eseguire la sonda

root@kitploit:~
python .\lab_probe.py

Output previsto:

  • Stampa i compressori negoziati dal primo hello
  • Stampa le dimensioni richiesta/risposta
  • Invia un hello compresso e registra sia le dimensioni del messaggio compresso che decompresso

4) Eseguire la demo giocattolo (nessuna rete)

root@kitploit:~
python .\lab_probe.py --toy-demo

Esegue solo controlli di parsing locali per illustrare perché la validazione della dimensione è importante.

5) Spegnere

root@kitploit:~
docker compose down

Note di sicurezza

  • Il container è associato a 127.0.0.1:27017 sull'host.
  • Nessun comportamento di exploit è presente.
  • La sonda impone limiti conservativi (ad es., dimensione massima del messaggio) e convalida tutti i campi di lunghezza.

Scarica lo strumento