
Exploit proof-of-concept per CVE-2024-23724 in Ghost CMS, che dimostra l'escalation dei privilegi tramite caricamento di immagine del profilo SVG dannosa.
Per testare la vulnerabilità, abbiamo bisogno di due account: un account con il ruolo di amministratore (proprietario) e un account con il ruolo di collaboratore. In Ghost CMS, devi prima accedere al pannello di amministrazione per creare l'account proprietario, poi, da questo account, invitare un collaboratore affinché crei il proprio account. Tuttavia, in Ghost, l'unico modo per invitare un collaboratore è inviare un link di invito via e-mail, il che richiede un servizio di consegna delle e-mail per inviare il messaggio all'account del collaboratore. Per semplificare le cose, abbiamo creato un account Mailgun, aggiunto un collaboratore a Ghost e poi creato un file di dump del database nello stato in cui lo avevamo. Nella nostra configurazione Docker Compose, ci assicuriamo prima di tutto di ripristinare il database dal dump prima di avviare Ghost, così non avrai bisogno di un servizio di consegna delle e-mail per testare questa vulnerabilità. Tuttavia, se desideri iniziare con un'installazione pulita e non utilizzare il dump del database fornito, puoi usare il Docker Compose nella cartella manual-setup per avviare un'installazione Ghost pulita. Di seguito troverai i passaggi per configurare Mailgun (un servizio di consegna delle e-mail che abbiamo utilizzato) e farlo funzionare con Ghost.
Per questa installazione, ecco le credenziali di amministratore e collaboratore da utilizzare per accedere:
Per iniziare, devi creare un account Mailgun. Una volta creato il tuo account, ottieni le tue credenziali SMTP. Dopo aver ottenuto le credenziali, inseriscile nel file config.development.json seguendo lo stesso formato mostrato nel file config.example.json.
Ecco una guida passo passo:
config.example.json e rinominalo in config.development.json.config.development.json. Questo garantirà che il tuo ambiente di sviluppo sia configurato correttamente per inviare e-mail tramite Mailgun.Puoi avviare l'installazione che hai scelto utilizzando il seguente comando:
docker-compose up
Per testare l'attacco, segui i seguenti passaggi:
python generate-malicious-svg.py -u [USERNAME] -p [PASSWORD] -t http://localhost
Per l'installazione automatica, il comando è:
python generate-malicious-svg.py -u [email protected] -p ZtXfMq2FaRHGm@! -t http://localhost
Questo comando genera un file SVG dannoso chiamato tenant-takeover.svg nella directory corrente.
Accedi all'interfaccia di amministrazione di Ghost utilizzando le credenziali dell'account collaboratore che hai creato. Per farlo, visita http://localhost:3001/ghost e accedi con le credenziali dell'account collaboratore.
Vai alla pagina di modifica del tuo profilo cliccando sulla tua foto del profilo in basso a sinistra dello schermo, poi cliccando sul pulsante "Your profile".
Clicca sull'icona del profilo per cambiare la tua foto del profilo. Seleziona il file SVG dannoso che hai generato al passaggio 1.
Salva le modifiche cliccando sul pulsante "Save & close". Puoi aggiornare la pagina per verificare che la foto del profilo sia stata cambiata.
Ora puoi disconnetterti dall'account collaboratore e accedere all'account amministratore. Sotto http://localhost:3001/ghost/#/settings/staff?tab=contributors, puoi vedere che la foto del profilo del collaboratore è stata cambiata. Se fai clic con il tasto destro sulla foto del profilo e apri l'immagine in una nuova scheda, l'attacco verrà innescato. Ora puoi tornare a http://localhost:3001/ghost/#/settings/staff e vedrai che il collaboratore è ora proprietario del blog e tu sei diventato un amministratore.
Abbiamo realizzato un video che descrive in dettaglio l'intero processo e i passaggi necessari per implementare la CVE. Questo video funge da guida visiva per comprendere meglio il nostro approccio e le azioni eseguite.
Link al video: Clicca qui per guardare il video
Non esitare a consultare questo video per una panoramica completa del progetto e dei passaggi tecnici seguiti.