Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2019-20933 — Report dettagliato di laboratorio passo-passo che dimostra l'elusione dell'autenticazione di InfluxDB tramite token JWT falsificati (CVE-2019-20933), includendo sfruttamento, post-sfruttamento e linee guida per la correzione. | Kitploit
Strumenti/GitHubGitHub/dungsocool/cve-2019-20933
Autenticazione e AutorizzazioneAnalisi delle VulnerabilitàExploitCTFPenetration TestingApprendimento e FormazioneSicurezza dei DatabaseLab e Pratica
GitHubdungsocool/cve-2019-20933

CVE-2019-20933

Report dettagliato di laboratorio passo-passo che dimostra l'elusione dell'autenticazione di InfluxDB tramite token JWT falsificati (CVE-2019-20933), includendo sfruttamento, post-sfruttamento e linee guida per la correzione.

484 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
Vedi Repository

LAB 5-CVE-2019-20933

I. ANALISI DEL SISTEMA

Identificazione della Superficie d'Attacco

Iniziando con ciò che è in esecuzione nell'ambiente. Elenco tutti i container attivi:

docker ps

image.png

La vittima espone una singola porta: 8086.

Attualmente, non ho informazioni dettagliate sul target. Dall'output di docker ps, il sistema espone solo un servizio notevole esternamente sulla porta 8086, che è mappata al servizio all'interno del container. Questa è la superficie d'attacco principale da analizzare.

Invece di accedervi immediatamente tramite browser, procediamo a identificare il servizio usando Nmap per determinare quale servizio è in esecuzione sulla porta 8086:

nmap -sV -sC -p 8086 192.168.3.137

image.png

I risultati della scansione mostrano che la porta 8086 è il servizio HTTP di InfluxDB OSS 1.6.6. Questo è un database time-series esposto tramite un'API HTTP, non una tipica applicazione web.

Analisi Riflessiva Post-Identificazione

InfluxDB è un database time-series open-source scritto in Go. A differenza di RDBMS (ottimizzato per transazioni precise) o Elasticsearch (ottimizzato per ricerca testuale), InfluxDB è stato creato con un unico scopo: Gestire volumi massivi di scrittura (Alto Throughput di Scrittura) e interrogare i dati lungo l'asse temporale con bassa latenza.

image.png

Poiché il servizio è stato identificato come InfluxDB, il passo successivo è fare riferimento a come InfluxDB comunica con i client. Secondo la documentazione dell'API HTTP InfluxDB v1, la porta 8086 è la porta API HTTP predefinita. Gli endpoint importanti includono:

  • /ping: verifica lo stato operativo del server.
  • /query: invia interrogazioni InfluxQL per leggere metadati o dati.
  • /write: scrive dati time-series nel database.

⇒ Riflessione: Dopo che Nmap identifica il servizio come InfluxDB http admin 1.6.6, non continuiamo a testarlo come un sito web standard. Per le applicazioni web, cerchiamo tipicamente rotte, moduli di login o directory. Tuttavia, con InfluxDB, la superficie d'attacco risiede nell'API HTTP. Pertanto, dobbiamo passare al test degli endpoint API standard di InfluxDB per determinare se l'API richiede autenticazione. Di conseguenza, la prossima direzione di test non è accedere a / tramite browser, ma inviare richieste direttamente agli endpoint API di InfluxDB.

Analisi del Comportamento dell'API e Identificazione dei Target di Autenticazione

Verifica dell'Endpoint /ping

Dopo aver identificato la porta 8086 come API HTTP di InfluxDB, verifica l'endpoint /ping per confermare che il servizio sia operativo:

curl -i <http://192.168.3.137:8086/ping>

image.png

Risposta 204 No Content conferma che InfluxDB funziona normalmente. Le intestazioni confermano inoltre la versione del servizio come InfluxDB OSS 1.6.6

Verifica dell'Autenticazione sull'Endpoint /query

curl -i -s "http://192.168.3.137:8086/query?q=SHOW+DATABASES"

image.png

L'endpoint /query non consente interrogazioni dirette senza credenziali di autenticazione. Ciò conferma che InfluxDB ha l'autenticazione abilitata e blocca tutte le interrogazioni anonime inviate al sistema.

Passo a riflettere: la versione 1.6.6 di InfluxDB ha qualche vulnerabilità che permette di bypassare il meccanismo di autenticazione?

image.png

Consultando i database pubblici delle vulnerabilità, le versioni di InfluxDB precedenti alla 1.7.6 sono affette da CVE-2019-20933. Si tratta di una vulnerabilità di Bypass dell'Autenticazione nella funzione di autenticazione di InfluxDB, relativa alla gestione dei token JWT con un segreto condiviso vuoto.

Poiché il target esegue InfluxDB 1.6.6, che è inferiore alla versione corretta 1.7.6, il servizio rientra nell'intervallo di versioni affette.

Si può concludere:

ServizioInfluxDB OSS
Versione1.6.6
AutenticazioneAbilitata
Mappatura CVECVE-2019-20933
ImpattoBypass dell'Autenticazione
StatoVersione vulnerabile

⇒ Riflessione: Inizialmente, l'endpoint /query restituisce 401 Unauthorized, indicando che il meccanismo di autenticazione è attivo. Tuttavia, avere l'autenticazione abilitata non significa sicurezza assoluta. Quando la versione è identificata come 1.6.6, dobbiamo correlarla con CVE noti. I risultati indicano che questa versione rientra nell'intervallo affetto da CVE-2019-20933, il che significa è possibile bypassare il meccanismo di autenticazione che protegge l'endpoint /query. Sulla base di questi risultati di identificazione, la fase di sfruttamento si concentrerà sulla verifica di CVE-2019-20933 generando un token JWT appropriato per bypassare l'autenticazione ed eseguire interrogazioni sull'endpoint /query.

Analisi del Meccanismo della Vulnerabilità (CVE-2019-20933)

La vulnerabilità CVE-2019-20933 si verifica nella funzione authenticate all'interno del file services/httpd/handler.go di InfluxDB precedente alla versione 1.7.6.

Meccanismo di Autenticazione JWT in InfluxDB

InfluxDB supporta l'autenticazione utilizzando JSON Web Token (JWT) per le richieste API HTTP. Quando riceve una richiesta con l'intestazione:

Authorization: Bearer <token>

InfluxDB eseguirà i seguenti passaggi:

  1. Decodificare il token per estrarre Intestazione e Payload.
  2. Leggere il valore di configurazione shared-secret dal file influxdb.conf per fungere da chiave segreta per la verifica della firma del token.
  3. Se la firma è valida, recuperare il campo username dai claims per determinare l'utente che esegue l'interrogazione.

Il Difetto

Nelle versioni affette, se l'autenticazione JWT è abilitata ma il parametro shared-secret non è configurato, il valore segreto potrebbe essere elaborato come stringa vuota ("").

Il sistema non riesce a validare adeguatamente la robustezza del segreto prima di verificare la firma del JWT. Ciò consente a un attaccante di costruire un JWT personalizzato, firmarlo con un segreto vuoto e quindi impostare il claim username su un account valido nel sistema, come admin se questo account esiste nel laboratorio.

Quando questo token viene inviato tramite l'intestazione Authorization: Bearer <token>, InfluxDB utilizza lo stesso segreto vuoto per verificare la firma. Se la firma corrisponde e il nome utente esiste, la richiesta sarà autorizzata senza richiedere la password effettiva dell'utente.

Il flusso di elaborazione può essere riassunto come segue:

Scarica lo strumento