En quoi consiste l’élévation de privilèges ?

Élévation de privilèges sur systèmes Linux : techniques et bonnes pratiques sécurité

L’élévation de privilèges est un concept clé pour les attaquants qui cherchent à accéder à des informations sensibles ou à des fonctionnalités restreintes sur un système informatique. Généralement, cela consiste à exploiter des faiblesses de sécurité dans un système donné pour passer d’un niveau d’accès limité, avec des autorisations standards, à un niveau d’accès plus élevé, avec des droits plus importants.

Sur les systèmes Linux, il existe plusieurs techniques pour élever les privilèges d’un utilisateur. L’exploitation de faiblesses de configuration, les vulnérabilités présentes dans les programmes et la mauvaise gestion de droits en sont les principales.

Cependant, les risques liés à l’élévation de privilèges sont importants car un attaquant pourrait accéder à des données sensibles, effectuer des modifications non autorisées ou utiliser le système à d’autres fins malveillantes. De fait, il s’agit d’un sujet à ne pas prendre à la légère par les administrateurs systèmes, qui doivent toujours tenir compte de ce risque et implémenter les mesures de sécurité appropriées pour le prévenir.

Dans cet article, nous détaillerons les principales techniques d’élévation de privilèges sur les systèmes Linux avec des exemples concrets pour illustrer leur fonctionnement, ainsi que les bonnes pratiques sécurité pour se protéger.

Quelles sont les principales techniques d’élévation de privilèges sur les systèmes Linux ?

Exploitation de faiblesses de configuration

La première technique d’élévation de privilèges sur les systèmes Linux, sûrement la plus répandue, consiste à exploiter des faiblesses de configuration. Pour ce faire, il s’agit de tirer parti d’un manque de configuration des paramètres de sécurité d’un système pour accéder à des données ou des fonctionnalités restreintes (en dehors des autorisations prévues).

Mots de passe faibles et attaques brute force

Un exemple courant de faiblesse de configuration, facilement exploitable, est la présence d’un compte avec un mot de passe faible. En effet, un attaquant pourrait, via du brute force, essayer de trouver le mot de passe du compte en utilisant une liste de mots de passe souvent utilisés. De plus, pour augmenter les chances de succès d’une attaque brute force, il est possible de construire un liste de mots de passe à variables en intégrant par exemple le nom, l’entreprise, la date de naissance, etc. d’une cible précise.

De fait, les exemples de mots de passe suivants (liste non exhaustive), encore trop couramment utilisés sont à proscrire car ils peuvent être devinés pour la plupart en moins de 10 secondes avec le bon dictionnaire :

•	password
•	123456
•	123456789
•	admin
•	administrator
•	root
•	toor

Pour prévenir ces risques, les administrateurs systèmes doivent s’assurer que les mots de passe utilisés pour les comptes sont robustes et uniques. Et pour cela, il est fortement recommandé d’utiliser des gestionnaires de mots de passe afin de générer des mots de passe longs, aléatoires et donc difficilement devinables. Dans le même but, le service PAM (Pluggable Authentication Modules) peut être configuré afin d’imposer l’utilisation de mots de passe robustes, en demandant par exemple un nombre minimum de caractères ou en interdisant la présence de son nom dans le mot de passe, etc.

Enfin, un autre mécanisme pour contrer les attaques brute force consiste en l’implémentation de fail2ban, qui permet de bannir automatiquement les adresses IPs après plusieurs échecs de connexion.

Pour plus d’informations, nous vous renvoyons vers notre article dédié : Attaques brute force : principes et bonnes pratiques sécurité.

Mauvaise gestion des droits d’accès et violation du principe du moindre privilège

Le principe du moindre privilège devrait être respecté pour les services mis en place. Si un attaquant exploite une vulnérabilité dans un service qui tourne en tant qu’administrateur, alors il aura les mêmes privilèges que le service. Par exemple, si un serveur web, exécuté avec les droits administrateur, permet via une vulnérabilité d’exécuter du code arbitraire, ce code sera exécuté avec le compte administrateur.

La plupart du temps lors de nos pentests, on observe une mauvaise gestion des droits d’accès à certains fichiers ou programmes sur le serveur. Seulement, si des fichiers possèdent des mauvaises permissions, un utilisateur avec peu de privilèges peut être en mesure de les lire voire de les modifier.

Prenons par exemple le cas suivant : le fichier vaadata_secret_protected.pdf peut seulement être lu et modifié par l’utilisateur root. En revanche, le fichier vaadata_secret.pdf peut être lu par n’importe quel utilisateur.

-rwx------ 1 root root    0 Jan 17 14:56 vaadata_secret_protected.pdf
-rwxr--r-- 1 root root    0 Jan 17 14:56 vaadata_secret.pdf

Une mauvaise configuration des droits d’accès pourrait être présente sur le fichier de configuration d’un service utilisé avec plus de droits que l’utilisateur actuel et pourrait permettre de prendre le contrôle du service.

Il est important de noter qu’il existe de nombreuses autres faiblesses de configuration qui peuvent être exploitées pour élever les privilèges sur un système Linux. Les administrateurs systèmes doivent donc être conscients de ces risques et prendre les mesures de sécurité appropriées pour les prévenir.

Exploitation de vulnérabilités dans les programmes

Une autre méthode courante d’élévation de privilèges sur les serveurs Linux consiste en l’exploitation de vulnérabilités dans les programmes (systèmes d’exploitation, serveurs web, bases de données, etc.). Ces vulnérabilités peuvent être des bugs dans le code permettant aux attaquants d’exécuter du code arbitraire (RCE) avec des privilèges élevés.

Par exemple, une vulnérabilité de type buffer overflow dans un programme peut permettre l’élévation de privilèges. Les bugs de ce type peuvent permettre aux attaquants d’exécuter du code arbitraire en utilisant des entrées malveillantes qui dépassent la taille allouée pour ces entrées. Les attaquants peuvent ensuite exécuter des commandes avec des privilèges élevés en utilisant les privilèges du programme vulnérable.

Un deuxième exemple serait des vulnérabilités présentes dans des services de gestion de fichiers. Les services tels que Samba, NFS et FTP sont utilisés pour partager des fichiers entre différents systèmes. Si ces services contiennent des vulnérabilités, les attaquants peuvent être en mesure d’accéder à des fichiers sensibles ou d’exécuter des commandes avec des privilèges élevés. En 2019, la publication d’une vulnérabilité de vsftpd 2.3.4 (CVE-2011-2523) a permis à des attaquants de prendre le contrôle de serveurs FTP en utilisant une backdoor présente dans le logiciel.

Exploitation de privilèges en local

Sur les systèmes Linux, les programmes peuvent être configurés pour être exécutés avec le compte d’un autre utilisateur (SUID), d’un autre groupe (SGID) ou avec des capacités supplémentaires.

Ces programmes ont besoin d’accéder à des fonctionnalités ou des informations restreintes pour fonctionner correctement. Par exemple, l’utilitaire passwd nécessite d’être exécuté avec l’utilisateur root pour éditer le fichier contenant les mots de passes. Ainsi, ces programmes peuvent être configurés de manière à être vulnérables aux attaques, et ainsi permettre aux attaquants d’élever leurs privilèges.

Par exemple, si le binaire nmap possède le bit SUID, les commandes exécutées le seront avec l’utilisateur qui possède le fichier nmap.

TF=$(mktemp)
echo 'os.execute("/bin/sh")' > $TF
nmap --script=$TF

Le site GTFOBins recense les techniques d’exploitation de binaire possédant des privilèges liés à une mauvaise configuration.

Enfin, une autre possibilité pour un attaquant d’obtenir des privilèges sont les tâches automatisées (tâches cron). On peut imaginer un scénario ou une tâche planifiée permettant d’exécuter un script est modifiable par tous les utilisateurs.

# > ls -la /opt/backup.sh

-rw-rw-rw- 1 root root 0 Jan 17 15:07 backup.sh

Ainsi, un attaquant peut modifier le contenu du script afin que la tâche planifiée exécute en tant que root la commande malveillante (comme un reverse-shell) et ainsi élever les privilèges de l’attaquant.

# > crontab -l

# Backup vaadata website
* * * * * /opt/backup.sh

Comment prévenir l’élévation de privilèges ?

Un des rôles des administrateurs systèmes est de mettre en place des mesures de sécurité pour empêcher ou limiter les élévations de privilèges.

Mettre en oeuvre une politique de mises à jour efficace

Mettre à jour régulièrement les systèmes Linux est un aspect central prévenir certaines attaques d’élévation de privilèges. En effet, des vulnérabilités sont constamment identifiées sur les programmes. Néanmoins, ces découvertes sont très souvent (et très rapidement) accompagnées de patchs de correction, qui prennent la plupart du temps la forme d’une nouvelle version (majeure ou mineure).

Par conséquent, mettre en oeuvre une politique de mises à jour est essentielle, pour ne pas dire vitale, car, la release d’un patch est souvent accessible publiquement. De fait, tous les attaquants, les plus novices comme les plus expérimentés, peuvent avoir accès aux détails des vulnérabilités identifiées ainsi qu’aux diverses exploitations possibles. Cela leur permet de lancer des attaques de grande envergure, avec des chances de succès élevés. C’est pour cette raison qu’il est indispensable de maintenir à jour les systèmes, avec les derniers correctifs de sécurité, pour prévenir les risques d’exploitation.

Logging et monitoring des événements système

Les logs système permettent d’enregistrer des informations détaillées sur les activités des utilisateurs, les connexions réseau et les erreurs système. C’est pour cette raison qu’une politique de sécurité efficace ne peut se faire sans une bonne gestion des logs, afin de détecter des activités anormales comme les tentatives d’élévation de privilèges par exemple.

Pour le logging et le monitoring, il existe de nombreux outils (logstash, logtail, splunk, etc.) qui peuvent être configurés pour identifier les utilisateurs suspects et alerter les administrateurs en cas d’activité anormale.

Enfin, il est important de conserver les logs pendant une période suffisamment longue pour permettre une analyse rétrospective en cas d’incident de sécurité. Pour plus d’informations, vous pouvez consulter notre article dédié : Logging et monitoring : définitions et bonnes pratiques

Sécuriser les accès et mettre en oeuvre le principe du moindre privilège

Il est important de configurer les systèmes de manière à octroyer aux utilisateurs et aux programmes des droits d’accès limités en fonction de leur rôle et des tâches qu’ils réalisent. En effet, le principe du moindre privilège doit toujours être appliqué pour minimiser les risques d’élévation.

De plus, il est important de mettre en place des stratégies de gestion des privilèges, comme la restriction des privilèges pour des utilisateurs temporaires par exemple. En effet, de la même manière, les utilisateurs temporaires ne doivent avoir accès qu’aux privilèges nécessaires pour remplir leur tâche et les privilèges doivent être automatiquement révoqués une fois qu’ils n’ont plus besoin d’eux.

Conclusion

L’élévation de privilèges sur un système Linux est une préoccupation majeure en matière de sécurité informatique. Les attaquants peuvent utiliser différentes méthodes pour élever leurs privilèges sur un système, comme l’exploitation des vulnérabilités dans des programmes, l’exploitation de mots de passe faible, ou même l’exploitation de programmes avec des privilèges élevés.

Il est important pour les administrateurs de systèmes de comprendre ces risques et de prendre les mesures de sécurité appropriées pour les éviter. Cela peut inclure la surveillance régulière des vulnérabilités de logiciels, les mises à jour de sécurité et la formation des employés. Il est également important de limiter les privilèges des programmes aux seuls privilèges nécessaires pour leur bon fonctionnement et de surveiller régulièrement les logs pour détecter toute activité anormale.

Enfin, il est important de noter que les menaces en matière de sécurité évoluent constamment, il est donc nécessaire de maintenir une vigilance constante et de continuer à se tenir informé des dernières tendances en matière de sécurité pour protéger efficacement les systèmes contre les attaques d’élévation de privilèges.

Auteur : Alexis MARTIN – Pentester @Vaadata