Ministero dello Sviluppo Economico

CERT Nazionale Italia - Computer Emergency Response Team

Vulnerabilità

Vulnerabilità 0-day in Magento consente il caricamento di file arbitrari

cross-site request forgery  Magento  remote code execution   venerdì, 14 aprile 2017

I ricercatori di sicurezza di DefenseCode hanno scoperto una grave vulnerabilità zero-day che affligge la piattaforma di e-commerce Magento. Se sfruttata con successo, questa vulnerabilità potrebbe consentire ad un attaccante remoto di eseguire codice arbitrario sul server con conseguente compromissione del sistema, incluso il database che contiene informazioni sensibili sugli utenti, quali numeri di carte di credito e altre informazioni di pagamento.

La vulnerabilità risiede nella funzionalità che consente di aggiungere alla descrizione di un prodotto contenuti video dalla piattaforma Vimeo. In questo caso, Magento tenta di scaricare un’immagine di anteprima del video da un URL remoto mediante una richiesta HTTP POST. Questa richiesta può essere modificata da POST in GET per realizzare attacchi di tipo cross-site request forgery (CSRF).

Se il file puntato dall’URL non contiene un’immagine in un formato riconosciuto, l’applicazione risponde con un messaggio di errore ma il file viene comunque scaricato sul server e salvato in un percorso locale predicibile, costruito come segue:

/pub/media/tmp/catalog/product/<x>/<y>/<nome del file originale>

Le porzioni <x> e <y> del percorso corrispondono rispettivamente al primo e al secondo carattere del nome del file.

È possibile sfruttare questo comportamento di Magento per caricare sul server uno script PHP arbitrario. Per poter eseguire lo script da remoto è necessario caricare nello stesso percorso anche un file “.htaccess” contenente un’istruzione per abilitare l’esecuzione di script PHP nella directory di download. Per poter essere caricati nella stessa directory, è sufficiente che i nomi dei due file inizino entrambi per “.h”. Il file PHP può ad esempio essere chiamato “.hshell.php” (il carattere “.” verrà sostituito da Magento con un carattere underscore “_”).

Il file “.htaccess” può contenere la seguente semplice istruzione per il server Web Apache:

php_flag engine 1

Di seguito invece un esempio di script PHP proof-of-concept:

<?php echo shell_exec($_GET['cmd']); ?>

Una volta caricato il file PHP, questo può essere eseguito da remoto inviando al server una richiesta simile alla seguente:

http://<indirizzo del sito>/magento2/pub/media/tmp/catalog/product/_/h/.hshell.php?cmd=whoami

Per accedere alla funzionalità di caricamento di contenuti video in Magento non è necessario un accesso con privilegi di amministratore. È sufficiente ottenere un accesso ad un’applicazione Magento come utente semplice non privilegiato per poter sfruttare questa vulnerabilità e compromettere l’intero sito.

Gli scopritori hanno comunicato l’esistenza della falla al produttore già a novembre del 2016. Ad oggi, non è ancora stato reso disponibile un aggiornamento che risolva questo problema in Magento.

Per un’analisi più dettagliata di questa vulnerabilità si consiglia di consultare il rapporto tecnico di DefenseCode.

Notizie correlate

Vulnerabilità multiple 0-day in VxWorks

1 agosto 2019

Sono state scoperte 11 gravi vulnerabilità zero-day nei sistemi operativi VxWorks prodotti da Wind River che possono consentire l'esecuzione di codice da remoto.Leggi tutto

Grave Vulnerabilità in ProFTPd

25 luglio 2019

È stata scoperta una grave vulnerabilità di tipo esecuzione di codice da remoto nell’applicativo ProFTPd.Leggi tutto

Vulnerabilità critica in VLC media player

24 luglio 2019

È stata recentemente scoperta una vulnerabilità critica in VideoLAN VLC media player che può consentire l'esecuzione di codice arbitrario.Leggi tutto