Escalade des privilèges Linux en exploitant les droits SUDO.
L'élévation de privilèges est un moyen pour les attaquants d'élever leurs privilèges sur un système. Par exemple, supposons qu'un attaquant a accédé à votre serveur Web, mais uniquement en tant qu'utilisateur à faibles privilèges. Ils ne peuvent pas lire ou écrire des fichiers sensibles, exécuter des scripts ou modifier la configuration du système. Comment pourraient-ils compromettre votre serveur et y maintenir leur accès ?
S'ils peuvent trouver un moyen de faire croire au système qu'ils sont l'utilisateur root, l'attaquant peut mener des attaques plus puissantes comme la lecture et l'écriture de fichiers sensibles et l'insertion de portes dérobées permanentes dans le système. Et c'est là qu'intervient l'escalade des privilèges.
Aujourd'hui, parlons de la
façon dont les attaquants peuvent exploiter les droits SUDO mal
configurés pour élever leurs privilèges.
Qu'est-ce que SUDO ?
SUDO signifie "Super Utilisateur DO". Il s'agit d'une autorisation spéciale qui permet aux utilisateurs d'exécuter des programmes avec les privilèges de sécurité d'un autre utilisateur, généralement l'utilisateur root.
Les administrateurs accordent
aux utilisateurs l'accès SUDO afin qu'ils puissent exécuter certaines
commandes en tant qu'utilisateur root. Si l'administrateur a accordé
les droits SUDO pour une commande à un utilisateur, cet utilisateur peut
exécuter la commande avec les privilèges root en tapant le sudocommande avant la commande réelle, puis en entrant leur mot de passe. Par exemple, pour exécuter le whoamien tant qu'utilisateur root, l'utilisateur disposant des droits SUDO peut exécuter cette commande :
La plupart du temps, les
administrateurs n'accorderont aux utilisateurs des droits SUDO que sur
quelques commandes. Mais même dans ce cas, ces droits SUDO peuvent
introduire des problèmes d'escalade de privilèges.
Escalade de privilèges SUDO
Alors, comment les attaquants peuvent-ils exploiter leurs droits SUDO pour exécuter des commandes arbitraires en tant qu'utilisateur root ?
Si l'attaquant a des droits
SUDO sur des programmes qui permettent l'exécution de commandes ou des
écritures arbitraires dans des fichiers du système, l'attaquant peut
exploiter l'accès root temporaire pour exécuter du code en tant que root
sur le système. Vous pouvez trouver les commandes que l'utilisateur
actuel peut exécuter avec SUDO via cette commande :
Par exemple, disons que les utilisateurs réguliers ont la possibilité d'exécuter la commande findavec SUDO afin qu'ils puissent rechercher tous les fichiers sur le système. La
commande "find" est généralement utilisée pour localiser des fichiers et
dispose souvent des autorisations SUDO pour permettre aux utilisateurs
de rechercher des fichiers dans le système. Mais find permet l'exécution de commandes système via le flag -exec ! Par exemple, pour exécuter le ls commande depuis l'intérieur, vous pouvez utiliser la commande find . -exec ls \;. Donc, si un utilisateur peut exécuter la commande find en tant que SUDO, ils peuvent exécuter des commandes système en tant que root !
Ces erreurs de configuration
rendent l'élévation de privilèges triviale. Par exemple, un attaquant
peut utiliser la possibilité d'exécuter des commandes en tant que root
et s'ajouter en tant qu'utilisateur root dans le /etc/passwd fichier. Cette commande fera exactement cela :
shanks et un mot de passe vide. Depuis 0 est l'UID de l'utilisateur root, en ajoutant un utilisateur avec l'UID de 0 donnera
à cet utilisateur les privilèges root. Cette commande n'est pas
possible pour les utilisateurs réguliers car seuls les utilisateurs
privilégiés peuvent modifier les fichiers critiques du système tels que
le fichier /etc/password.
De nombreux programmes permettent aux utilisateurs d'exécuter des commandes système et find n'est que l'un d'entre eux. D'autres exemples incluent vim, python, less, et more.
Plus de dangers SUDO
Les programmes qui conduisent à une élévation des privilèges lorsqu'ils sont exécutés avec SUDO ne sont pas limités aux programmes qui permettent l'exécution de code système arbitraire. Tous les programmes qui autorisent des écritures arbitraires dans les fichiers système peuvent entraîner une élévation des privilèges lorsqu'ils sont exécutés avec SUDO.
Par exemple, si l'éditeur de
fichiers Nano peut être exécuté avec SUDO, l'attaquant peut utiliser les
permissions root de Nano pour ouvrir le fichier /etc/passwd et s'ajouter en tant qu'utilisateur root directement dans l'éditeur de fichiers !
Et l'utilitaire système cp est
utilisé pour copier et écraser les fichiers. S'il peut être exécuté
avec SUDO, les attaquants peuvent altérer n'importe quel fichier du
système en écrasant le fichier d'origine avec ses privilèges root ! Par
exemple, l'attaquant peut créer une copie de l'original /etc/password à un fichier qui leur appartient. Ensuite, ils peuvent s'ajouter en tant qu'utilisateur root en modifiant la copie du passwd fichier. Enfin, ils utilisent le cpcommande pour écraser l'original du fichier /etc/password avec celui modifié.
Fais attention!
Les droits SUDO doivent être accordés avec soin. Bien sûr, certains programmes en ont besoin car ils ont besoin des privilèges root pour fonctionner correctement. Mais si vous accordez des droits SUDO à des programmes qui permettent aux utilisateurs d'exécuter des commandes système ou d'écrire dans des fichiers système aléatoires, vous introduisez des vulnérabilités d'élévation de privilèges dans votre système.
Merci d'avoir lu! La prochaine fois, nous nous plongerons dans d'autres techniques d'escalade de privilèges que les attaquants peuvent utiliser pour compromettre votre système.
Aucun commentaire:
Enregistrer un commentaire