Hi guys ! what’s up ?

 

Introduction

 

Dans un article précédent, je vous ai parlé de l’escalade des privilèges Linux à l’aide du fichier /etc/passwd et aujourd’hui, je suis de retour pour vous montrer une autre méthode d’escalade des privilèges Linux à l’aide du fichier Sudoers.

Lors de la résolution des CTFs, pour l’élévation des privilèges il faut toujours vérifier les autorisations root de tout utilisateur pour exécuter n’importe quel fichier ou commande en exécutant sudo -l.

 

Le concept théorique !!

 

Sous Linux/Unix, il y a un fichier sudoers dans /etc qui est le fichier de configuration des droits sudo. Vous connaissez tous la puissance de la commande sudo ! le mot sudo représente SuperUser Do root.

Le fichier Sudoers est le fichier dans lequel les utilisateurs et les groupes disposant des privilèges root sont stockés pour exécuter certaines ou toutes les commandes en tant que root ou un autre utilisateur. Pas très compliqué, finalement si je tape sudo -l et qu’en face d’un utilisateur je vois des commandes je pourrais alors taper cette commande pour être root. Rien de particulier non ?

 

Voici le fichier sudoers : pour l’ouvrir je tape la commande visudo

Lorsque j’exécute une commande avec sudo, elle a besoin des privilèges root pour l’exécution et Linux vérifie ce nom d’utilisateur particulier dans le fichier sudoers.

S’il a conclu que le nom d’utilisateur particulier est dans la liste des fichiers sudoers ou non, sinon je ne peux pas exécuter la commande ou le programme à l’aide de la commande sudo. Conformément aux droits sudo, l’utilisateur root peut s’exécuter à partir de TOUS les terminaux , agissant en tant que TOUS les utilisateurs : groupe TOUS et exécuter la commande TOUS .

 

Syntaxe du fichier Sudoers

 

Si moi (utilisateur root) souhaite accorder le droit sudo à un utilisateur particulier, je dois taper la commande visudo qui ouvrira le fichier sudoers pour modification. Sous « spécification des privilèges de l’utilisateur », j’observe l’autorisation root par défaut  » root ALL = (ALL: ALL) ALL « .Mais en réalité, il existe également une option TAG disponible qui est facultative.

 

NOTE:

(ALL:ALL) peut également être représentée comme (ALL)

Si rien n’est mentionné pour l’utilisateur/groupe, cela signifie que sudo est par défaut l’utilisateur root.

 

Pratique

 

Avant d’attaquer la partie escalade de privilège, je vais créer un utilisateur pour mieux pouvoir vous montrer comment ça fonctionne. Je vous conseille vivement de le faire aussi pour tester.

Adduser jon

Voilà, tout est prêt !

 

 

Méthode traditionnelle pour attribuer le privilège root

 

En tant qu’administrateur si j’ai envie de donner les doits du super utilisateur à l’utilisateur jon, je dois procéder de la manière suivante :

  • Ouvrir le fichier sudoers avec la commande visudo
  • Utiliser la bonne syntaxe pour donner les droits

jon         ALL=(ALL:ALL) ALL

 

Maintenant que j’ai terminé la configuration, je démarre ma machine attaquante Kali Linux et je compromets d’abord le système cible, puis je passe à la phase d’escalade de privilège comme dans un vrai CTF.

Supposons que je me suis connecté avec succès à la machine de la victime via ssh et que je souhaite connaître les droits sudo de l’utilisateur actuel.

 Pour cela j’exécute la commande sudo -l.

Note : Rappelez-vous j’ai beaucoup parlé de cette commande sur les articles de résolution de CTf 😉, voilà pourquoi c’est important.

C’est opérationnel ! passons aux choses sérieuses.

 

 

 

Méthode par défaut pour attribuer le privilège root

 

Toujours pareil si en tant qu’admin je souhaite accorder à l’utilisateur jon l’autorisation root d’exécuter toutes les commandes et tous les programmes, je peux aussi écrire :

jon         ALL= ALL

Vérification depuis le server cible :

Ici, j’ai utilisé la commande sudo bash mais je pouvais aussi taper sudo su essayez 😉 !

 

Autoriser le privilège root aux commandes binaires

 

Parfois, un utilisateur a l’autorisation d’exécuter n’importe quel fichier ou commande d’un répertoire particulier tel que /bin/cp, /bin/cat ou /usr/bin/ find, ce type d’autorisation conduit à une élévation de privilèges pour l’accès root sur la cible.

 

jon ALL=(racine) NOPASSWD : /usr/bin/find

 

REMARQUE : la balise NOPASSWD signifie qu’aucun mot de passe ne sera demandé pour l’authentification lors de l’exécution de la commande sudo -l.

Toujours depuis notre accès sur le server j’observe le résultat : sudo -l

sudo find /home -exec /bin/bash \;

Nickel ! ça fonctionne, j’ai déjà vu plusieurs fois ce scénario sur les CTFs donc retenez bien les amis 😊.

 

 

Autoriser le privilège root aux programmes binaires

 

Il arrive souvent que l’administrateur système attribue des droits spécifiques à un utilisateur particulier pour exécuter des programmes binaires qui permettent de modifier n’importe quel fichier système tel que /etc/passwd par exemple.

Certains programmes binaires peuvent entraîner une élévation de privilèges, je vous montre :

Dans le fichier sudoers je rajoute

 jon ALL= (root) NOPASSWD: /usr/bin/perl, /usr/bin/python3, /usr/bin/less, /usr/bin/man, /usr/bin/vi

 

  • Vérification avec perl:

sudo perl -e ‘exec « /bin/bash »;’

 

  • Vérificaton avec python3

sudo python -c ‘import pty;pty.spawn(« /bin/bash »)’

 

 

  • Vérification avec less

sudo less /etc/hosts

Lorsque je tape cette commande il m’ouvre un fichier système en mode édition, je vais rajouter à la fin !bash :

Une fois que je valide avec la touche Enter je regarde le résultat :

Bingo !

 

 

  • Vérification avec man

sudo man man

De la même manière que précédemment après avoir tapé la commande sudo man man un fichier s’ouvre (manuel) et je peux ajouter : !bash

Un petit check pour voir si je deviens root :

Yeah !! c’est cool je constate que c’est super puissant en fait.

 

  • Vérification avec vi

sudo vi

je dois avouer que c’est très fréquent d’utiliser vi pour escalader les privilèges vers root, toujours pareil il suffit d’ajouter !bash (très pratique dans beaucoup de CTfs 😉) :

Et normalement ça doit fonctionner :

Super !

 

REMARQUE : les autorisations sudo pour less, nano, man, vi et man sont très dangereuses car elles permettent à l’utilisateur de modifier le fichier système et entraînent une élévation des privilèges ! soyez vigilents.

 

 

Autres types de programmes 

 

Comme je viens de vous montrer ci-dessus, certains programmes binaires avec le droit sudo sont utiles pour obtenir un accès root. Mais en dehors de cela, d’autres applications peuvent également fournir un accès root si elles possèdent le privilège sudo, comme le FTP…, je vous mets en pratique pour mieux comprendre.

Je rajoute :

jon ALL=(ALL) NOPASSWD : /usr/bin/env, /usr/bin/ftp, /usr/bin/scp, /usr/bin/socat

 

Comme je vous ai parlé du FTP, je commence par celui-ci :

sudo ftp

! /bin/bash

C’est fort ! franchement c’est très puissant tout de même.

 

Et pour finir, je vous montre avec la commande env :

sudo env /bin/bash

Je vous laisse la curiosité d’essayer le reste des commandes pour que vous puissiez vous faire la main 😉.

 

 

Conclusion

 

Ça y est les amis, c’est la fin de cet article qui suit parfaitement le précèdent sur l’escalade de privilège sur Linux. J’espère que vous aurez compris le principe, dans l’ensemble ce n’est pas compliqué.

Une maîtrise des points abordés sera un plus pour vous que se soit en CTF ou ailleurs ! après avoir fait quelques CTFs, je me suis rendu compte que pour les débutants, tout est basé sur ce que je viens de vous expliquer.

Cependant, si vous rencontrez des difficultés ou des erreurs durant la mise en pratique de cet article n’hésitez pas me contacter.

 

Je vous dis à très vite pour un prochain article (je vous prépare la suite de l’escalade des privilèges).

PEACE 😊 !

No responses yet

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

2 × deux =

Follow by Email
YouTube