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 in PHP 7

28 gennaio 2020

ono state scoperte diverse vulnerabilità in PHP 7 che potrebbero consentire ad un attaccante remoto di eseguire codice arbitrario nel contesto dell’applicazione affetta o di causare condizioni di denial of service.Leggi tutto

Avviso di sicurezza di Microsoft per falla critica 0-day in Internet Explorer

20 gennaio 2020

Microsoft ha rilasciato un avviso di sicurezza relativo ad una vulnerabilità critica zero-day in Internet Explorer che può causare l’esecuzione di codice arbitrario da remoto.Leggi tutto

Grave Vulnerabilità 0-Day su Citrix NetScaler e ADC

13 gennaio 2020

È stata recentemente individuata una grave vulnerabilità zero-day nei prodotti Citrix NetScaler, Citrix Application Delivery Controller (ADC) e Citrix Gateway.Leggi tutto