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-detector — Script di rilevamento per lo sfruttamento di MongoBleed | Kitploit
Strumenti/GitHubGitHub/neo23x0/mongobleed-detector
Analisi delle VulnerabilitàScripting e AutomazioneInformatica ForenseDigital ForensicsThreat IntelligenceRisposta agli IncidentiSicurezza dei DatabaseAnalisi dei Log
GitHubneo23x0/mongobleed-detector

mongobleed-detector

Script di rilevamento per lo sfruttamento di MongoBleed

Vedi Repository
81137 mesi faRevisionato da Kitploit

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

MongoBleed Detector

Strumento di analisi MongoDB offline per CVE-2025-14847 (MongoBleed)

Un tool standalone da riga di comando per Linux che analizza i dati di MongoDB per identificare probabili sfruttamenti di CVE-2025-14847 utilizzando molteplici moduli di rilevamento.

Indice

  • Panoramica
  • Moduli di rilevamento
  • Requisiti
  • Installazione
  • Due modalità operative
  • Modalità 1: Analisi locale
  • Modalità 2: Raccolta remota
  • Opzioni da riga di comando
  • Livelli di confidenza
  • Esempio di output
  • Test
  • Avvertenze e limitazioni
  • Riferimenti e crediti
  • Licenza

Panoramica

MongoBleed (CVE-2025-14847) è una vulnerabilità di divulgazione della memoria nella decompressione zlib di MongoDB che consente agli aggressori di estrarre dati sensibili—credenziali, token di sessione, PII—direttamente dalla memoria del server senza autenticazione.

Questo strumento aiuta i responder agli incidenti a rilevare tentativi di sfruttamento utilizzando molteplici fonti di prova:

  • Modulo A: Correlazione dei log (eventi di connessione, assenza di metadati)
  • Modulo B1: Analisi dei conteggi di asserzioni (istantanee di serverStatus.asserts)
  • Modulo B2: Rilevamento di picchi FTDC (serie temporali diagnostic.data)

Caratteristiche principali

  • Rilevamento multi-modulo - Correla più fonti di dati per una maggiore confidenza
  • Offline e senza agente - Nessuna connettività di rete richiesta durante l'analisi
  • Auto-scoperta - Rileva automaticamente le fonti di dati disponibili
  • Raccolta remota - Raccoglie dati da più host tramite SSH
  • Punteggio combinato - Verdetto ALTA/MEDIA/BASSA confidenza
  • Elaborazione in streaming - Gestisce file di log di grandi dimensioni in modo efficiente

Moduli di rilevamento

Modulo A: Correlazione dei log

Analizza i log JSON di MongoDB per rilevare schemi di sfruttamento:

ID eventoTipoDescrizione
22943Connessione accettataRegistrato quando un client si connette
51800Metadati clientRegistrato quando un client invia informazioni driver/ applicazione

Intuizione chiave: I driver MongoDB legittimi inviano sempre i metadati del client. L'exploit MongoBleed si connette, estrae memoria e si disconnette—ma non invia mai metadati.

Modulo B1: Conteggi di asserzioni

Analizza le istantanee di db.serverStatus().asserts per rilevare schemi insoliti nei contatori asserts.user:

  • Istanze multiple: Confronta istantanee nel tempo per rilevare picchi improvvisi nelle asserzioni utente
  • Euristica con singola istantanea: Quando è disponibile una sola istantanea, rileva schemi sospetti confrontando asserts.user con altri tipi di asserzione. Se le asserzioni utente sono sproporzionatamente alte (rapporto ≥250x) o tutti gli altri tipi sono zero, viene segnalato come sospetto (confidenza MEDIA)

Nota: I contatori cumulativi possono produrre falsi positivi. Da utilizzare in combinazione con FTDC (Modulo B2) per risultati ottimali.

Modulo B2: Rilevamento di picchi FTDC

Analizza i file di Full-Time Diagnostic Data Capture (FTDC) di MongoDB per rilevare picchi localizzati nel tempo nei contatori di asserzioni. FTDC campiona serverStatus periodicamente, consentendo una tempistica precisa di potenziali attacchi.

Requisiti

Script shell (mongobleed-detector.sh)

  • Linux o macOS (bash 4+)
  • jq - Processore JSON
  • awk (gawk raccomandato)
  • gzip - Per il supporto di log compressi

Componenti Python (opzionali, per decodifica FTDC)

  • Python 3.8+
  • pymongo - Per la decodifica dei file FTDC

Scanner remoto (mongobleed-remote.py)

  • Python 3.8+
  • Client SSH nativo (comandi ssh, scp)
  • Nessun pacchetto Python aggiuntivo richiesto per il funzionamento base

Installare le dipendenze

root@kitploit:~
# Dipendenze dello script shell
# Debian/Ubuntu
apt-get install jq gawk gzip

# RHEL/CentOS/Fedora
dnf install jq gawk gzip

# macOS
brew install jq gawk

# Dipendenze Python (per decodifica FTDC)
pip install -r requirements.txt

Installazione

root@kitploit:~
# Clona il repository
git clone https://github.com/your-org/mongobleed-detector.git
cd mongobleed-detector

# Rendi eseguibili gli script
chmod +x mongobleed-detector.sh
chmod +x mongobleed-remote.py
chmod +x ftdc-decode.py

# Installa le dipendenze Python (opzionale, per supporto FTDC)
pip install -r requirements.txt

Due modalità operative

Modalità 1: Analisi locale

Analizza i dati raccolti manualmente dagli host MongoDB.

Modalità 2: Raccolta remota

Raccoglie automaticamente dati da più host tramite SSH, poi analizza localmente.

Modalità 1: Analisi locale

Passo 1: Raccogliere i dati

Raccogli i dati dai tuoi host MongoDB e organizzali in questa struttura:

root@kitploit:~
./collected-data/
├── logs/                    # Log JSON di MongoDB
│   ├── mongod.log
│   ├── mongod.log.1
│   └── mongod.log.2.gz
├── assert-counts/           # Istanze di serverStatus().asserts
│   ├── asserts-2025-01-01.json
│   └── asserts-2025-01-02.json
└── ftdc-files/              # Contenuti di diagnostic.data FTDC
    ├── metrics.2025-01-02T10-00-00Z-00000
    └── metrics.interim

Raccogliere i log

root@kitploit:~
# Copia da host remoto
scp user@mongohost:/var/log/mongodb/mongod.log* ./collected-data/logs/

Raccogliere i conteggi di asserzioni

Esegui questo comando sull'host MongoDB (richiede accesso a mongosh):

root@kitploit:~
mongosh --quiet --eval 'JSON.stringify({
  timestamp: new Date().toISOString(),
  hostname: db.hostInfo().system.hostname,
  asserts: db.serverStatus().asserts,
  uptime: db.serverStatus().uptime
})' > asserts-$(date +%Y%m%d-%H%M%S).json

Copia il file JSON risultante in ./collected-data/assert-counts/.

Suggerimento: Esegui questo comando più volte (ad esempio, ogni ora) per stabilire una baseline e rilevare picchi.

Raccogliere i file FTDC

I file FTDC si trovano in:

  • mongod: <storage.dbPath>/diagnostic.data/ (comunemente /var/lib/mongodb/diagnostic.data/)
  • mongos: Derivato da systemLog.path (es. /var/log/mongodb/mongos.diagnostic.data/)
root@kitploit:~
# Copia file FTDC (potrebbe richiedere sudo)
sudo cp /var/lib/mongodb/diagnostic.data/metrics.* ./collected-data/ftdc-files/

Passo 2: Eseguire l'analisi

root@kitploit:~
# Modalità auto-scoperta - analizza tutti i dati disponibili
./mongobleed-detector.sh --data-dir ./collected-data/

# Con soglie personalizzate
./mongobleed-detector.sh --data-dir ./collected-data/ \
    -t 1440 \              # Finestra di 24 ore
    -c 50 \                # Soglia connessioni più bassa
    --spike-threshold 50   # Soglia picco più bassa

Modalità legacy (solo log)

Per compatibilità con versioni precedenti, puoi ancora analizzare i log direttamente:

root@kitploit:~
# Scansiona percorsi predefiniti
./mongobleed-detector.sh

# Scansiona file di log specifici
./mongobleed-detector.sh -p /percorso/dei/log/*.json

# Modalità forense (analizza più host)
./mongobleed-detector.sh --forensic-dir /prove/

Modalità 2: Raccolta remota

Raccogli automaticamente dati da più host e analizza:

root@kitploit:~
# Crea file hosts
cat > hosts.txt << EOF
mongo-prod-01.example.com
mongo-prod-02.example.com
mongo-staging.example.com
EOF

# Raccogli e analizza
./mongobleed-remote.py --hosts-file hosts.txt --user admin --output-dir ./collected-data/

Opzioni dello scanner remoto

root@kitploit:~
# Usa una chiave SSH specifica
./mongobleed-remote.py --hosts-file hosts.txt --user admin --key ~/.ssh/mongodb_key

# Esecuzione parallela
./mongobleed-remote.py --hosts-file hosts.txt --user admin --parallel 10

# Salta la raccolta FTDC (più veloce)
./mongobleed-remote.py --hosts-file hosts.txt --user admin --skip-ftdc

# Solo raccolta, analisi successiva
./mongobleed-remote.py --hosts-file hosts.txt --user admin --collect-only

# Passa opzioni SSH (es. host di salto)
./mongobleed-remote.py --hosts-file hosts.txt --user admin \
    -o "ProxyJump=bastion.example.com"

# Usa sudo per accesso a file privilegiati (i file FTDC sono spesso limitati)
./mongobleed-remote.py --hosts-file hosts.txt --user admin --sudo

# Modalità debug per risolvere problemi di connessione
./mongobleed-remote.py --hosts-file hosts.txt --user admin --debug

Nota sui permessi FTDC: I file FTDC in /var/lib/mongodb/diagnostic.data/ sono tipicamente di proprietà dell'utente mongodb e non leggibili dagli utenti normali. Se vedi avvisi "FTDC Permission Issues", usa il flag --sudo. Ciò richiede che l'utente remoto abbia accesso sudo senza password (NOPASSWD in sudoers).

Cosa viene raccolto

Opzioni da riga di comando

mongobleed-detector.sh

mongobleed-remote.py

Codici di uscita

CodiceSignificato
0Nessun risultato ALTO o MEDIO
1Risultati ALTI o MEDI rilevati
2Errore (dipendenze mancanti, nessun dato, ecc.)

Livelli di confidenza

Lo strumento fornisce un verdetto combinato di confidenza basato su tutte le prove disponibili:

Livelli di rischio specifici per modulo

Per la correlazione dei log (Modulo A), i singoli IP vengono classificati:

RischioCriteri
ALTOConnessioni ≥ soglia, tasso metadati < 10%, tasso burst ≥ 400/min
MEDIO

Esempio di output

root@kitploit:~
INFO: Modalità auto-scoperta: analisi di ./collected-data/
INFO: Modulo A: Analisi di 3 file di log...
INFO: Modulo B1: Analisi dei conteggi asserzioni...

╔══════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
║                              Risultati rilevamento MongoBleed (CVE-2025-14847)                                   ║
╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝

Stato moduli:
  [✓] Modulo A (Correlazione log): 3 file di log trovati
  [✓] Modulo B1 (Conteggi asserzioni): 4 istantanee trovate
  [−] Modulo B2 (Picchi FTDC): Nessun file FTDC o decoder non disponibile

Parametri di analisi:
  Finestra temporale:       4320 minuti
  Soglia connessioni:       100
  Soglia tasso burst:       400/min
  Tasso metadati:           0.10
  Soglia picco:             100
  Soglia rapporto utente:   250x

Risultati Modulo A - Correlazione log:

Rischio    SourceIP                                  ConnCount  MetaCount  DiscCount    MetaRate%    BurstRate/m FirstSeen (UTC)        LastSeen (UTC)        
-------- ---------------------------------------- ---------- ---------- ---------- ------------ -------------- ---------------------- ----------------------
ALTO      137.137.137.137                                8172          0       8172        0.00%         490.32 2025-12-27T12:55:52Z   2025-12-27T13:12:32Z  

Analisi Modulo B1 - Conteggi asserzioni:
  Analizzate 4 istantanee dal 2025-01-01T10:00:00Z al 2025-01-01T11:30:00Z
    asserts.user: 100 -> 860 (delta: 760)
  PICCO RILEVATO: 2025-01-01T10:30:00Z al 2025-01-01T11:00:00Z
    Delta: +740 asserzioni utente (110 -> 850)

═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════
Verdetto combinato:
  CONFIDENZA MEDIA - Indagine raccomandata
    - Schemi di connessione sospetti ma dati FTDC non disponibili per correlazione

⚠ IMPORTANTE: Se lo sfruttamento è confermato, solo la patch non è sufficiente.
  - Ruota tutte le credenziali che potrebbero essere state esposte
  - Esamina i dati accessati per divulgazione di informazioni sensibili
  - Verifica la presenza di movimento laterale dai sistemi colpiti
  - Conserva i log per analisi forense

Avvertenze:
  - L'assenza di metadati di connessione è specifica del PoC e può essere elusa
  - I contatori di asserzioni sono cumulativi - possibili falsi positivi senza baseline
  - FTDC fornisce tempistiche ma non attribuzione perfetta
  - Patch + rotazione dei segreti rimane obbligatoria indipendentemente dai risultati del rilevamento

Test

Il repository include una suite di test per validare il detector.

Dati di esempio reali

La directory example-data/ contiene dati reali da un'istanza MongoDB 8.0.16 che è stata attaccata utilizzando il PoC MongoBleed:

root@kitploit:~
example-data/
├── logs/                    # Log MongoDB reali con schemi di attacco
│   ├── mongod.log
│   └── mongod.log.1.gz
├── assert-counts/           # Istantanea post-attacco di serverStatus().asserts
│   └── asserts-post-attack.json
└── ftdc-files/              # File dati diagnostici FTDC reali
    └── metrics.*

Questi dati mostrano:

  • 16.344 connessioni dall'IP attaccante 137.137.137.137 con 0% di metadati
  • 37.384 asserzioni utente accumulate durante l'attacco
  • File FTDC che coprono la finestra di attacco

Generare dati di test sintetici

root@kitploit:~
./test/generate-test-logs.sh

Questo crea ulteriori dati di test sintetici con vari schemi:

  • File di log con schemi di rischio ALTO/MEDIO/BASSO/INFO
  • Istanze JSON di conteggi asserzioni (con e senza picchi)
  • Casi limite (IPv6, input malformati, ecc.)

Eseguire i test

root@kitploit:~
./test/test-detector.sh

Output previsto:

root@kitploit:~
╔════════════════════════════════════════════════════════╗
║       Suite di test MongoBleed Detector                ║
╚════════════════════════════════════════════════════════╝

Test Modulo A (Correlazione log):
✓ PASS: Codice uscita è 1 (risultati rilevati)
✓ PASS: Rilevato IP sorgente 137.137.137.137
...

Test Modulo B1 (Conteggi asserzioni):
✓ PASS: Mostra stato Modulo B1
✓ PASS: Rilevato picco di asserzioni
...

Test Modalità auto-scoperta:
✓ PASS: Mostra stato Modulo A
✓ PASS: Mostra verdetto combinato
...

Risultati:
  Superati: 24
  Falliti: 0

Tutti i test superati!

Avvertenze e limitazioni

⚠️ Limitazioni importanti

Limitazioni del rilevamento

  1. Rilevamento specifico per PoC: L'assenza di metadati si basa sul comportamento noto del PoC MongoBleed. Un aggressore sofisticato potrebbe modificare l'exploit per inviare metadati falsi, anche se ciò ridurrebbe la velocità di sfruttamento.

  2. Contatori cumulativi: asserts.user è cumulativo dal riavvio di mongod. Senza istantanee di baseline, valori elevati potrebbero essere normali per istanze a lunga esecuzione. Più istantanee nel tempo migliorano significativamente l'accuratezza.

  3. Tempistica FTDC: FTDC fornisce informazioni sulla tempistica ma non attribuzione perfetta. Da utilizzare insieme alla correlazione dei log per risultati ottimali.

  4. Conservazione dei log: Può analizzare solo i log esistenti. Una rotazione aggressiva o la cancellazione dei log da parte dell'aggressore distruggerà le prove.

Requisiti tecnici

  1. Log JSON richiesti: MongoDB 4.4+ usa per impostazione predefinita log JSON. I log di testo legacy non sono supportati.

  2. Decoder FTDC: La decodifica FTDC richiede Python 3 con pymongo. Senza di esso, il Modulo B2 non è disponibile.

  3. Accesso mongosh: La raccolta dei conteggi di asserzioni richiede mongosh con permessi appropriati.

Azioni post-rilevamento

Se vengono confermati risultati ALTI o MEDI:

  1. Conserva le prove - Copia i log prima che vengano ruotati
  2. Rotazione delle credenziali - Ruota tutte le credenziali MongoDB e qualsiasi segreto che potrebbe essere stato in memoria
  3. Revisione dei dati - Valuta quali dati sensibili potrebbero essere stati esposti
  4. Movimento laterale - Verifica la presenza di movimento dell'aggressore verso altri sistemi
  5. Patch immediata - Applica gli aggiornamenti di sicurezza MongoDB
  6. Segnalazione - Segui le procedure di risposta agli incidenti

Riferimenti e crediti

Ricerca sul rilevamento

La logica di rilevamento in questo strumento si basa sulla ricerca di Eric Capuano e Tamir Zimerman:

  • Hunting MongoBleed (CVE-2025-14847) - Articolo di Eric Capuano sulla vulnerabilità e metodologia di rilevamento
  • A Different MongoBleed Perspective - Analisi di Tamir Zimerman sul rilevamento basato sulle asserzioni

Documentazione MongoDB

  • Comando serverStatus - Documentazione del campo asserts
  • Full Time Diagnostic Data Capture - Posizioni di archiviazione FTDC
  • What is MongoDB FTDC - Informazioni sul formato FTDC

Versioni interessate

Licenza

Vedere il file LICENSE.

Contribuire

Contributi benvenuti! Si prega di inviare issue e pull request.

Se testate questo strumento su dati di produzione, apprezzeremmo particolarmente feedback su:

  • Tassi di falsi positivi
  • Schemi di traffico legittimo
  • Casi limite o errori di parsing
  • Problemi di decodifica FTDC
Scarica lo strumento
22944
Connessione chiusa
Registrato quando un client si disconnette
Tipo di datoSorgenteDestinazione
Log/var/log/mongodb/mongod.log*<output-dir>/<hostname>/logs/
Conteggi asserzioniComando mongosh<output-dir>/<hostname>/assert-counts/
File FTDC/var/lib/mongodb/diagnostic.data/metrics.*<output-dir>/<hostname>/ftdc-files/
OpzioneDescrizionePredefinito
-d, --data-dir <percorso>Directory con dati raccolti (modalità auto-scoperta)-
-p, --path <glob>Percorso/glob log aggiuntivo (ripetibile)-
-t, --time <minuti>Finestra di osservazione in minuti4320 (3 giorni)
-c, --conn-thresholdSoglia conteggio connessioni100
-b, --burst-thresholdSoglia tasso burst al minuto400
-m, --metadata-rateSoglia tasso metadati (0.0-1.0)0.10
--spike-thresholdSoglia picco asserzioni100
--user-ratio-thresholdRapporto utente/altre asserzioni per rilevamento singola istantanea250
--no-default-pathsSalta i percorsi di log predefinitifalse
--forensic-dir <percorso>Analizza sottodirectory come host separati-
OpzioneDescrizionePredefinito
-H, --host <hostname>Host remoto da scansionare (ripetibile)-
-f, --hosts-file <file>File contenente hostname (uno per riga)-
-u, --user <utente>Nome utente SSHUtente corrente
-k, --key <file>File chiave privata SSHssh-agent
-P, --port <porta>Porta SSH22
-o, --ssh-options <opzione>Opzioni SSH aggiuntive (ripetibile)-
--sudoUsa sudo per accesso a file privilegiati (FTDC)false
-O, --output-dir <percorso>Directory per memorizzare i dati raccolti./collected-data
--log-path <percorso>Percorso log remoto da raccogliere (ripetibile)Percorsi standard
--ftdc-path <percorso>Directory FTDC remota da raccogliere (ripetibile)Percorsi standard
--skip-logsSalta raccolta logfalse
--skip-assertsSalta raccolta serverStatus().assertsfalse
--skip-ftdcSalta raccolta file FTDCfalse
--collect-onlySolo raccolta dati, non eseguire analisifalse
-j, --parallel <n>Numero di connessioni parallele5
--timeout <secondi>Timeout comando SSH300
-d, --debugAbilita output di debug (mostra comandi SSH)false
-q, --quietSopprime messaggi di avanzamentofalse
ConfidenzaCriteriInterpretazione
ALTAPicchi FTDC rilevati E log sospetti nella stessa finestra temporaleForte indicatore di sfruttamento
MEDIAPicchi FTDC O log sospetti (non correlati)Indagine raccomandata
BASSASolo conteggi asserzioni cumulativi senza picchiAnomalia rilevata, prova debole
INFONessun risultato significativoAttività normale
Connessioni ≥ soglia, tasso metadati < 10%, tasso burst < 400/min
BASSOConnessioni ≥ soglia, tasso metadati ≥ 10%
INFOConnessioni < soglia
VersioneVulnerabileCorretta in
8.2.x8.2.0 - 8.2.28.2.3
8.0.x8.0.0 - 8.0.168.0.17
7.0.x7.0.0 - 7.0.277.0.28
6.0.x6.0.0 - 6.0.266.0.27
5.0.x5.0.0 - 5.0.315.0.32
4.4.x4.4.0 - 4.4.294.4.30
4.2.x4.2.0+Nessuna correzione
4.0.x4.0.0+Nessuna correzione
3.6.x3.6.0+Nessuna correzione