
Exploit di esecuzione remota di codice per Roundcube 1.0.0 <= 1.2.2 e container vulnerabile
Roundcube è un software di webmail open-source ampiamente distribuito, utilizzato da molte organizzazioni e aziende in tutto il mondo. Lo specchio su SourceForge, ad esempio, conta più di 260,000 download negli ultimi 12 mesi, che rappresentano solo una piccola frazione degli utenti reali. Una volta installato Roundcube su un server, esso fornisce un'interfaccia web per consentire agli utenti autenticati di inviare e ricevere email tramite il proprio browser web.
In Roundcube 1.2.2 e versioni precedenti, l'input controllato dall'utente giunge non sanificato al quinto argomento di una chiamata alla funzione integrata mail() di PHP, che è documentata come critica per la sicurezza. Il problema è che l'invocazione della funzione mail() fa sì che PHP esegua il programma sendmail. Il quinto argomento consente di passare argomenti a questa esecuzione, permettendo una configurazione di sendmail. Poiché sendmail offre l'opzione -X per registrare tutto il traffico di posta in un file, un attaccante può abusare di questa opzione e generare un file PHP malevolo nella directory webroot del server attaccato. Le seguenti righe di codice attivano la vulnerabilità.
Per lo sfruttamento, la vulnerabilità richiede i seguenti requisiti:
mail() di PHP (per impostazione predefinita, se non è stato specificato alcun SMTP [1])mail() di PHP è configurata per utilizzare sendmail (per impostazione predefinita, vedere sendmail_path [2])safe_mode disattivato (per impostazione predefinita, vedere safe_mode [3])Questi requisiti non sono particolarmente impegnativi, il che a sua volta significa che c'erano molti sistemi vulnerabili in giro.
Per configurare un ambiente vulnerabile per il tuo test avrai bisogno di Docker installato, e ti basterà eseguire il seguente comando:
docker build -t vuln/cve-2016-9920 .
docker run --rm -it -p 80:80 vuln/cve-2016-9920
E genererà un'applicazione web vulnerabile sul tuo host sulla porta 80
In Roundcube 1.2.2 e versioni precedenti, l'input controllato dall'utente giunge non sanificato al quinto argomento di una chiamata alla funzione integrata
mail()di PHP, documentata come critica in termini di sicurezza. Il problema è che l'invocazione della funzionemail()fa sì che PHP esegua il programma sendmail. Il quinto argomento consente di passare parametri aggiuntivi a questa esecuzione, permettendo una configurazione di sendmail. Poiché sendmail offre l'opzione-Xper registrare tutto il traffico di posta in un file, un attaccante può abusare di questa opzione e generare un file PHP malevolo nella directory webroot del server attaccato. Sebbene questa vulnerabilità sia rara e poco conosciuta, RIPS la rilevò in pochi secondi. [4]
Per sfruttare questo target è sufficiente eseguire:
./exploit.py --host HOST --user USERNAME --pwd PASSWORD --path PATH --www_path WEB_DIRECTORY
Se stai usando questa immagine vulnerabile, puoi semplicemente eseguire:
./exploit.py --host 127.0.0.1 --user username --pwd password --path roundcube --www_path "/var/www/html/roundcube"
Dopo lo sfruttamento, un file chiamato backdoor.php verrà salvato nella cartella root della directory web. L'exploit ti fornirà una shell dove poter inviare comandi alla backdoor:
./exploit.py --host 127.0.0.1 --user username --pwd password --path roundcube --www_path "/var/www/html/roundcube"
[+] CVE-2016-9920 exploit by t0kx
[+] Exploiting 127.0.0.1
[+] Target exploited, acessing shell at http://127.0.0.1/roundcube/backdoor.php
[+] Running whoami: www-data
[+] Done
Questa falla è stata trovata da Robin Peraglie [4]. Il testo principale e l'idea di questo materiale didattico sono stati creati da opsxcq.
Questo o il programma precedente è SOLO a scopo educativo. Non usarlo senza permesso. Vale il solito disclaimer, in particolare il fatto che io (t0kx) non sono responsabile per alcun danno causato dall'uso diretto o indiretto delle informazioni o delle funzionalità fornite da questi programmi. L'autore o qualsiasi provider Internet NON si assume alcuna responsabilità per il contenuto o l'uso improprio di questi programmi o di loro derivati. Usando questi programmi accetti il fatto che qualsiasi danno (perdita di dati, crash di sistema, compromissione del sistema, ecc.) causato dall'uso di questi programmi non è responsabilità di t0kx.