Introduction
L'élévation de privilèges est une phase critique des tests d'intrusion et du piratage éthique. Une fois qu'un attaquant obtient un accès initial à faible privilège sur un système, son objectif suivant est souvent d'élever ses privilèges vers un compte administrateur ou root. Une élévation de privilèges réussie repose largement sur une énumération minutieuse du système : collecter autant d'informations que possible sur la configuration de la cible, les processus en cours, les permissions de fichiers et les logiciels installés.
Ce module doit renforcer une règle fondamentale : l'énumération précède l'exploitation. La plupart des élévations de privilèges réussies ne relèvent pas de la magie ; il s'agit simplement de remarquer une erreur de configuration ou une relation qui existait déjà.
Pour rationaliser ce processus fastidieux, les professionnels de la sécurité utilisent des scripts d'énumération automatisés. L'un des outils les plus populaires et les plus utilisés dans le secteur est LinPEAS (Linux Privilege Escalation Awesome Script). LinPEAS recherche automatiquement les chemins possibles pour élever les privilèges sur les hôtes Linux/Unix/macOS et met en évidence les résultats à l'aide d'un système de code couleur pour indiquer la probabilité d'une exploitation réussie.
L'automatisation est utile car les systèmes modernes comportent trop d'éléments mobiles pour être inspectés entièrement à la main lors de chaque mission. Cependant, les résultats du script nécessitent toujours une interprétation humaine.
Dans ce laboratoire, vous simulerez un scénario de post-exploitation. Vous agirez en tant que testeur d'intrusion devant transférer le script LinPEAS depuis votre machine « attaquante » vers une machine « cible », l'exécuter et analyser les résultats pour identifier les vecteurs d'élévation à haute probabilité.
Démarrer un serveur web local pour le transfert
Dans cette étape, vous apprendrez à héberger des fichiers afin qu'ils puissent être transférés vers une machine cible. Lors d'un test d'intrusion, vous disposez souvent d'un script utile (comme LinPEAS) sur votre machine locale, mais vous avez besoin d'un moyen de l'envoyer sur le serveur cible compromis.
Un moyen rapide et intégré d'héberger des fichiers sous Linux consiste à utiliser le module de serveur HTTP de Python. Cela vous permet de transformer instantanément n'importe quel répertoire en un serveur web léger.
Pour ce laboratoire, nous avons simulé deux environnements au sein de votre espace de travail. Le répertoire ~/project/attacker représente votre machine locale contenant le script linpeas.sh. Le répertoire ~/project/target représente le serveur compromis sur lequel vous devez télécharger le script.
Tout d'abord, accédez au répertoire de l'attaquant où se trouve le script :
cd ~/project/attacker
Listez le contenu du répertoire pour vérifier que le script est présent :
ls -l
Vous devriez voir linpeas.sh dans la sortie. Maintenant, démarrez un serveur HTTP Python sur le port 8080. Nous utiliserons le symbole & à la fin de la commande pour exécuter le serveur en arrière-plan, ce qui vous permettra de continuer à utiliser la même fenêtre de terminal :
python3 -m http.server 8080 &
Vous verrez une sortie similaire à celle-ci, indiquant que le serveur est en cours d'exécution :
Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...
Appuyez une fois sur Entrée pour récupérer votre invite de commande. Votre serveur web local héberge désormais activement le fichier linpeas.sh.
Télécharger LinPEAS sur la cible
Dans cette étape, vous agirez en tant que machine cible compromise et téléchargerez le script depuis le serveur web de l'attaquant.
Les systèmes Linux disposent généralement d'utilitaires de téléchargement en ligne de commande installés par défaut, tels que wget ou curl. Ces outils sont inestimables pour récupérer des scripts et des exploits sur un système cible.
Tout d'abord, accédez au répertoire cible simulé :
cd ~/project/target
Maintenant, utilisez la commande wget pour télécharger le script linpeas.sh depuis le serveur web local que vous avez démarré à l'étape précédente. Comme le serveur s'exécute dans le même environnement pour ce laboratoire, vous utiliserez localhost comme adresse :
wget http://localhost:8080/linpeas.sh
Vous verrez une sortie indiquant la progression du téléchargement :
--2026-10-25 10:00:00-- http://localhost:8080/linpeas.sh
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 645 [text/x-sh]
Saving to: ‘linpeas.sh’
linpeas.sh 100%[===================>] 645 --.-KB/s in 0s
2026-10-25 10:00:00 (15.4 MB/s) - ‘linpeas.sh’ saved [645/645]
Vérifiez que le fichier a été téléchargé avec succès en listant le contenu du répertoire :
ls -l
Vous devriez maintenant voir linpeas.sh dans votre répertoire ~/project/target.
Exécuter le script
Dans cette étape, vous allez préparer et exécuter le script LinPEAS.
L'exécution de l'outil n'est que le début. La vraie valeur réside dans la capacité à distinguer les résultats qui sont du « bruit » normal de ceux qui correspondent à des chemins d'élévation exploitables.
Lorsque vous téléchargez un script depuis Internet ou que vous le transférez via un serveur web, Linux supprime sa permission « exécutable » pour des raisons de sécurité. Si vous essayez de l'exécuter immédiatement, vous recevrez une erreur « Permission denied ».
Pour corriger cela, vous devez utiliser la commande chmod (change mode) pour ajouter la permission d'exécution (+x) au fichier.
Exécutez la commande suivante pour rendre le script exécutable :
chmod +x linpeas.sh
Si vous exécutez à nouveau ls -l, vous remarquerez que les permissions du fichier ont changé (affichant généralement rwx pour l'utilisateur), et le nom du fichier peut apparaître dans une couleur différente dans votre terminal, indiquant qu'il s'agit désormais d'un programme exécutable.
Maintenant, exécutez le script. Sous Linux, pour exécuter un fichier exécutable situé dans votre répertoire actuel, vous devez le faire précéder de ./. Cela indique au système exactement où trouver le programme :
./linpeas.sh
Vous verrez le script s'exécuter et afficher diverses vérifications système. Dans un scénario réel, LinPEAS génère des milliers de lignes d'informations. Pour ce laboratoire, nous utilisons une version simulée simplifiée qui met en évidence les concepts fondamentaux.
[+] LinPEAS - Linux Privilege Escalation Awesome Script (Mock Version)
========================================================================
[?] Basic System Information
Linux labex-vm 5.15.0-1040-aws #45-Ubuntu SMP ...
[!] HIGH PROBABILITY PRIVILEGE Escalation VECTORS
[+] SUID files:
-rwsr-xr-x 1 root root 43K /usr/bin/sudo
-rwsr-xr-x 1 root root 32K /usr/bin/su
-rwsr-xr-x 1 root root 15K /usr/bin/custom_backup (Unknown SUID)
[?] Checking sudo permissions
User labex may run the following commands on this host:
(ALL : ALL) ALL
[+] Enumeration Completed.
Prenez un moment pour examiner la sortie. Remarquez comment elle catégorise les informations dans des sections telles que « Basic System Information » et « SUID files ».
Analyser les vecteurs à haute probabilité
Dans cette étape, vous apprendrez à gérer et à analyser les résultats générés par les scripts d'énumération.
Comme les scripts d'énumération réels produisent une quantité écrasante de texte, les testeurs d'intrusion ne se contentent rarement de le lire sur l'écran du terminal. Au lieu de cela, ils redirigent la sortie vers un fichier texte afin de pouvoir le parcourir ultérieurement à l'aide d'outils comme grep.
Exécutons à nouveau le script, mais cette fois, nous utiliserons l'opérateur > pour rediriger la sortie vers un fichier nommé results.txt :
./linpeas.sh > results.txt
Remarquez que rien ne s'est affiché à l'écran cette fois-ci. Tout le texte a été envoyé directement dans results.txt.
Analysons maintenant les résultats. LinPEAS est célèbre pour son code couleur, où le texte ROUGE/JAUNE indique une probabilité de 99 % d'un vecteur d'élévation de privilèges. Dans notre sortie, il a signalé un fichier « Unknown SUID ».
SUID (Set owner User ID up on execution) est un type spécial de permission de fichier accordé à un fichier. Lorsqu'un fichier avec SUID est exécuté, il s'exécute avec les privilèges du propriétaire du fichier (souvent root), plutôt que ceux de l'utilisateur qui l'a lancé. Si un binaire personnalisé ou vulnérable a le bit SUID défini, les attaquants peuvent l'exploiter pour obtenir un shell root.
Utilisez la commande grep pour rechercher spécifiquement le mot-clé SUID dans le fichier results.txt :
grep "SUID" results.txt
Vous devriez voir la sortie suivante :
[+] SUID files:
-rwsr-xr-x 1 root root 15K /usr/bin/custom_backup (Unknown SUID)
En filtrant la sortie, vous avez identifié avec succès un fichier hautement suspect (/usr/bin/custom_backup). Lors d'un test d'intrusion réel, votre prochaine étape consisterait à enquêter sur ce binaire spécifique pour voir s'il peut être exploité pour vous accorder un accès root.
Résumé
Dans ce laboratoire, vous avez expérimenté le processus critique de l'énumération automatisée du système pour l'élévation de privilèges. Vous avez appris à héberger des fichiers localement en utilisant le module de serveur HTTP intégré de Python. Vous avez également appris à transférer des fichiers vers une machine cible à l'aide d'outils en ligne de commande comme wget. De plus, vous vous êtes exercé à modifier les permissions de fichiers pour rendre des scripts exécutables et à les lancer. Enfin, vous avez appris à rediriger la sortie d'un script vers un fichier et à utiliser grep pour analyser les données à la recherche de vecteurs d'élévation à haute probabilité, tels que les binaires SUID mal configurés.
Ces compétences fondamentales sont essentielles pour tout professionnel de la sécurité ou testeur d'intrusion lors de l'évaluation de la posture de sécurité interne d'un système Linux.



