Vulnerable Services
De nombreux services peuvent présenter des failles exploitables pour réaliser une élévation de privilèges. Un exemple concret est le multiplexeur de terminal Screen. La version 4.5.0 souffre d'une vulnérabilité d'élévation de privilèges liée à l'absence d'une vérification des permissions lors de l'ouverture d'un fichier de log.
🌐 Identification de la version de Screen
Pour identifier la version de screen installée :
⚙️ Commande
screen -vSi la version correspond à celle vulnérable (ex. 4.05.00 ou 4.5.0 selon les builds), l'attaquant peut tirer parti d'un comportement qui permet de tronquer n'importe quel fichier ou de créer un fichier appartenant à
rootdans un répertoire arbitraire, menant potentiellement à un accès root complet.
🌐 Élévation de privilèges via un exploit Screen
Un exploit public montre comment abuser du comportement de screen pour écrire dans /etc/ld.so.preload et forcer le chargement d'une bibliothèque partagée malveillante, laquelle crée ensuite un binaire setuid root. L'exploit typique suit ces étapes :
Créer une bibliothèque partagée malveillante qui, via un constructeur, change le propriétaire et les permissions d'un shell local (
/tmp/rootshell) et supprime/etc/ld.so.preload.Compiler un binaire shell qui lorsqu'il est exécuté élève les identifiants effectifs (setuid(0), setgid(0)) et lance
/bin/sh.Profiter du comportement de
screen(log + nom de fichier contrôlable via wildcard/arguments) pour écrire le chemin de la bibliothèque malveillante dans/etc/ld.so.preload.Lancer
screen(setuid) pour déclencher le chargement de la bibliothèque et obtenir le binaire setuid root.
⚙️ Commande (exécution de l'exploit fourni)
./screen_exploit.sh🌐 Preuve de concept — Screen_Exploit_POC.sh
Ci‑dessous le script utilisé pour réaliser l'élévation de privilèges (conserver tel quel pour étude). Ne pas exécuter sur des systèmes de production ou sans autorisation.
⚙️ Script (bash)
Ce script illustre précisément la chaîne d'exploitation : création d'une bibliothèque malveillante, écriture dans
/etc/ld.so.preloadviascreen, puis exécution du shell racine.
🌐 Remarques de défense
Mettre à jour
screenvers une version corrigée ou appliquer les correctifs fournis par la distribution.Supprimer le bit
setuidsur le binairescreenlorsque cela est possible ou contrôler strictement les permissions et propriétaires.Restreindre la création et l'écriture de fichiers dans les répertoires utilisés par
screen(ex./run/screen, logs) et surveiller les modifications de/etc/ld.so.preload.Surveiller les activités de compilation (gcc) et la création de bibliothèques temporaires dans
/tmp.
📚 Ressources utiles
SSH to 10.129.70.78 (ACADEMY-LPE-NIX02) with user "htb-student" and password "Academy_LLPE!"
Connect to the target system and escalate privileges using the Screen exploit. Submit the contents of the flag.txt file in the /root/screen_exploit directory.
Nous nous connectons dans un premier temps à notre cible :
Une fois connectés, nous osbervons la version actuelle de screen :
La version 4.5.0 souffre d'une vulnérabilité d'élévation de privilèges due à l'absence de vérification des autorisations lors de l'ouverture d'un fichier journal.
Nous allons donc exploiter la vunlérabilité présente sur screen.
Pour se faire, nous créons le fichier exploit.sh :
Une fois le fichier créé, nous luis attribuons les droits nécessaires avant de l'exécuter :
Une fois l'exploit exécuté, nous pouvons voir que nous sommes connectés en tant que root sur notre cible :
Nous activons un shell interactif afin de rendre l'expérience meilleure :
Nous nous rendons donc dans le répertoire associé à notre challenge afin de récupérer le flag :
Nous obtenons ainsi le flag :
Last updated