
Roundcube 1.0.0 <= 1.2.2 Exploit d'exécution de code à distance et conteneur vulnérable
Roundcube est un logiciel de webmail open-source largement distribué, utilisé par de nombreuses organisations et entreprises dans le monde entier. Le miroir sur SourceForge, par exemple, compte plus de 260 000 téléchargements au cours des 12 derniers mois, ce qui ne représente qu'une petite fraction des utilisateurs réels. Une fois Roundcube installé sur un serveur, il fournit une interface web permettant aux utilisateurs authentifiés d'envoyer et de recevoir des emails via leur navigateur web.
Dans Roundcube 1.2.2 et versions antérieures, une entrée contrôlée par l'utilisateur circule non désinfectée dans le cinquième argument d'un appel à la fonction mail() intégrée de PHP, qui est documentée comme critique pour la sécurité. Le problème est que l'invocation de la fonction mail() amène PHP à exécuter le programme sendmail. Le cinquième argument permet de passer des arguments à cette exécution, ce qui permet une configuration de sendmail. Étant donné que sendmail propose l'option -X pour journaliser tout le trafic mail dans un fichier, un attaquant peut abuser de cette option et générer un fichier PHP malveillant dans le répertoire webroot du serveur attaqué. Les lignes de code suivantes déclenchent la vulnérabilité.
La vulnérabilité nécessite les exigences suivantes pour être exploitée :
mail() de PHP (par défaut, si aucun SMTP n'a été spécifié [1])mail() de PHP est configurée pour utiliser sendmail (par défaut, voir sendmail_path [2])safe_mode désactivé (par défaut, voir safe_mode [3])Ces exigences ne sont pas particulièrement exigeantes, ce qui signifie qu'il y avait beaucoup de systèmes vulnérables dans la nature.
Pour configurer un environnement vulnérable pour votre test, vous aurez besoin de Docker installé, et exécutez simplement la commande suivante :
docker build -t vuln/cve-2016-9920 .
docker run --rm -it -p 80:80 vuln/cve-2016-9920
Et cela générera une application web vulnérable sur votre hôte sur le port 80
Dans Roundcube 1.2.2 et versions antérieures, une entrée contrôlée par l'utilisateur circule non désinfectée dans le cinquième argument d'un appel à la fonction
mail()intégrée de PHP, qui est documentée comme critique en termes de sécurité. Le problème est que l'invocation de la fonctionmail()amène PHP à exécuter le programme sendmail. Le cinquième argument permet de passer des paramètres supplémentaires à cette exécution, ce qui permet une configuration de sendmail. Étant donné que sendmail propose l'option-Xpour journaliser tout le trafic mail dans un fichier, un attaquant peut abuser de cette option et générer un fichier PHP malveillant dans le répertoire webroot du serveur attaqué. Bien que cette vulnérabilité soit rare et peu connue, RIPS l'a détectée en quelques secondes. [4]
Pour exploiter cette cible, exécutez simplement :
./exploit.py --host HOST --user USERNAME --pwd PASSWORD --path PATH --www_path WEB_DIRECTORY
Si vous utilisez cette image vulnérable, vous pouvez simplement exécuter :
./exploit.py --host 127.0.0.1 --user username --pwd password --path roundcube --www_path "/var/www/html/roundcube"
Après l'exploitation, un fichier appelé backdoor.php sera stocké dans le dossier racine du répertoire web. Et l'exploit vous fournira un shell où vous pourrez envoyer des commandes à la 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
Cette faille a été découverte par Robin Peraglie [4]. Le texte principal et l'idée de ce contenu éducatif ont été créés par opsxcq.
Ce programme ou le précédent est UNIQUEMENT à des fins éducatives. Ne l'utilisez pas sans autorisation. L'avertissement habituel s'applique, notamment le fait que moi (t0kx) ne suis pas responsable des dommages causés par l'utilisation directe ou indirecte des informations ou fonctionnalités fournies par ces programmes. L'auteur ou tout fournisseur d'accès Internet n'encourt AUCUNE responsabilité pour le contenu ou l'utilisation abusive de ces programmes ou de leurs dérivés. En utilisant ces programmes, vous acceptez le fait que tout dommage (perte de données, crash système, compromission du système, etc.) causé par l'utilisation de ces programmes n'est pas de la responsabilité de t0kx.