Objectif
- Identifier méthodiquement les possibilités d’escalade de privilèges.
- Ne rater aucune piste classique (sudo, SUID, cron, services).
- Comprendre pourquoi une élévation est possible avant de tenter une exploitation.
Prérequis
- Un accès shell sur une machine Linux (CTF / HTB).
- La possibilité de transférer ou d’exécuter des outils d’énumération locaux.
- Un compte utilisateur non-root.
Préparation des outils d’énumération
Avant de lancer l’analyse, installe les outils nécessaires sur ta machine Kali et transfère-les vers la cible.
Outils recommandés :
Avec l’aide de la recette « Copier des fichiers depuis et vers Kali Linux » , transfère-les vers :
- /dev/shm (mémoire volatile, souvent discret)
- /tmp
Pourquoi /dev/shm ou /tmp ?
- Écriture autorisée pour l’utilisateur
- Nettoyage automatique au reboot
- Moins intrusif que /home
- Standard en CTF
Une fois sur la machine cible, rends-les exécutables :
cd /dev/shm
chmod +x linpeas.sh
chmod +x pspy64
chmod +x les.sh
Méthode structurée
L’ordre est intentionnel : commence par les vecteurs simples avant les outils lourds.
Contexte utilisateur
Commence toujours par comprendre où tu te trouves.
whoami
id
pwd
uname -a
hostname
À analyser :
- Ton utilisateur
- Les groupes
- La version du noyau
- Indices de containerisation
- Architecture (utile pour les binaires 32/64 bits)
Vérification sudo
sudo -l
Points clés :
- NOPASSWD
- Commandes exécutables en root
- Binaires custom
- Scripts modifiables
- Variables d’environnement autorisées
Si une commande exploitable apparaît ici, c’est prioritaire.
Permissions spéciales (Capabilities & SUID)
Capabilities
getcap -r / 2>/dev/null
Cherche :
- cap_setuid
- cap_setgid
- cap_sys_admin
- Tout binaire inattendu
SUID avec suid3num.py
python3 suid3num.py
Ou :
find / -perm -4000 -type f 2>/dev/null
Analyse :
- Binaires inhabituels
- Scripts root modifiables
- PATH hijacking possible
Pour chaque binaire suspect, vérifie sur GTFOBins.
Astuce CTF Après l’exécution de
getcap -r / 2>/dev/nullou/et desuid3num.py, consulte GTFOBins pour chaque binaire suspect afin de vérifier s’il existe une technique d’exploitation connue.
Services locaux
Avant de lancer un outil automatique, vérifie les services internes.
Avec ss (recommandé)
ss -tulnp
Alternative
netstat -tulnp
À analyser attentivement
- Services écoutant uniquement sur
127.0.0.1 - Ports inhabituels (3000, 5000, 8000, 8080, 9000…)
- Processus exécutés avec les privilèges root
- Bases de données locales
- Interfaces web internes
L’objectif est d’identifier un service exposé uniquement en local, pouvant constituer un point d’entrée secondaire.
Pourquoi c’est intéressant ?
Un service local peut :
- Être accessible via un SSH port forwarding
- Contenir une vulnérabilité exploitable
- Fonctionner en mode debug
- Être mal configuré
- Exécuter du code avec des privilèges élevés
Exemple de port forwarding SSH
Si un service écoute sur 127.0.0.1:8080, tu peux le rendre accessible depuis ta machine Kali :
ssh -L 8080:127.0.0.1:8080 user@target
Tu pourras ensuite y accéder via :
http://localhost:8080
Linpeas - Enumération approfondie
./linpeas.sh
Linpeas permet d’effectuer une analyse locale complète du système et de mettre en évidence les pistes d’escalade potentielles :
- Mauvaises permissions
- Fichiers sensibles accessibles en lecture
- Services internes
- SUID suspects
- Capabilities
- Tâches cron
- Variables d’environnement
- Mauvaises configurations sudo
- Indices de containerisation
- Vulnérabilités kernel potentielles
Utilise linpeas comme un outil de corrélation, pas comme une solution automatique.
Linpeas ne “donne” pas l’escalade : il met en lumière des anomalies qu’il faut ensuite analyser manuellement.
Comment exploiter intelligemment la sortie
Ne lis pas tout d’un bloc.
Procède méthodiquement :
Repère les sections en rouge ou en jaune.
Compare avec ce que tu as déjà identifié (sudo, SUID, services locaux).
Vérifie les chemins modifiables.
Analyse les fichiers appartenant à root mais accessibles.
Cherche une incohérence exploitable.
Si linpeas révèle quelque chose que tu avais déjà vu, cela renforce ta piste.
S’il révèle quelque chose de nouveau, prends le temps de comprendre le mécanisme avant toute tentative.
Bonnes pratiques CTF
- Lance linpeas après les vérifications manuelles.
- Ne base jamais ton exploitation uniquement sur sa coloration.
- Supprime-le après utilisation si nécessaire.
Observation en parallèle (recommandé)
Ouvre une nouvelle session et lance pspy64 :
./pspy64
Utilité :
- Détecter des cron jobs
- Observer des scripts root
- Identifier des exécutions récurrentes
Si système 32 bits :
./pspy32
Dernier recours : le kernel
Quand toutes les pistes logiques ont été explorées, il reste une possibilité : le noyau.
Examine la version du noyau :
uname -a
Puis teste avec les.sh pour identifier une vulnérabilité potentielle.
Un exploit kernel doit rester un dernier recours, après avoir exploré toutes les pistes liées à la configuration du système.
Avant toute tentative :
- Vérifie précisément la version du noyau
- Confirme la compatibilité de l’exploit
- Comprends le mécanisme d’élévation
Une bonne privilege escalation privilégie toujours les erreurs de configuration avant les exploits noyau.
Checklist rapide
- whoami / id / pwd / uname
- sudo -l
- getcap
- suid3num.py
- ss -tulnp
- linpeas.sh
- pspy64 en parallèle
- En dernier recours : analyser le kernel
Philosophie
- Toujours comprendre avant d’exploiter.
- Croiser les résultats entre outils.
- Noter chaque anomalie pour le writeup.
- Privilégier les vecteurs simples avant les exploits kernel.
Une bonne privilege escalation est structurée, reproductible et documentée.