Dans notre entreprise, nous avons plusieurs travailleurs et collaborateurs. Pour les collaborateurs externes, nous avons des comptes FTP spécifiques dans des dossiers restreints (dossiers de test) et un accès restreint à la base de données MySQL avec privilèges. Cependant, nous avons découvert qu’ils peuvent télécharger un fichier PHP avec
system("rm -r *");
et cela fonctionnera parfaitement, pour tous les chemins, y compris au plus haut niveau du répertoire FTP.
Comment pouvons-nous empêcher cela? Existe-t-il un moyen dans un fichier de configuration d’obliger la commande ci-dessus à échouer et la nécessité d’utiliser:
system("Sudo -uUSER -pPASSWORD rm -r *");
nous ne donnerons donc ces identifiants d’utilisateur et de mot de passe qu’à des collaborateurs de confiance, et les autres pourront continuer à travailler sans que nous ayons peur des jeux insensés de leur part?
La chose la plus sûre à faire dans cette instance est d'empêcher que ces comptes d'utilisateur temporaires aient un accès Sudo sur le serveur. S'ils sont en mesure de télécharger un fichier PHP sur le serveur et de l'exécuter via leur navigateur, il s'agit d'un trou de sécurité plus important que vous ne le croyez. D'abord, le serveur pourrait être mal configuré pour exécuter les fichiers PHP en tant qu'utilisateur qui les a téléchargés, ce qui indique que tous ces utilisateurs sous contrat temporaires ont reçu un accès Sudo de niveau racine qu'ils n'auraient pas dû. Dans l’autre cas, si le serveur exécute tous les fichiers PHP sous l’utilisateur du serveur Web (similaire à www-user), il convient de le configurer de manière à indiquer ensuite que le compte utilisateur www a un accès Sudo. ce qui est encore plus dangereux car toute personne se connectant au serveur Web peut alors exécuter une commande Sudo si elle peut en alimenter une via un fichier mal écrit PHP qui n'empêche pas le passage de commandes dangereuses.
La meilleure chose à faire est de limiter l’accès de Sudo au personnel qui en a absolument besoin et de le désactiver pour le compte Apache www-user.