Introduction
Bienvenue dans ce laboratoire pratique axé sur l'énumération SSH et l'exploitation de l'authentification faible basée sur les clés. Secure Shell (SSH) est un protocole fondamental pour l'administration sécurisée à distance, mais des mauvaises configurations peuvent créer des vulnérabilités de sécurité importantes.
Dans ce laboratoire, vous simulerez un test d'intrusion contre un système cible. Vous commencerez par vérifier la connectivité réseau, puis utiliserez le puissant outil nmap pour énumérer le service SSH et collecter des informations. Ensuite, vous exploiterez une clé privée fournie pour tirer parti d'une mauvaise configuration courante – des permissions de fichiers incorrectes – afin d'obtenir un accès shell sans mot de passe. Enfin, vous explorerez le système cible pour localiser et récupérer un drapeau caché.
Une fois terminé, vous comprendrez comment :
- Vérifier la connectivité réseau à l'aide de
ping. - Énumérer un service SSH avec
nmap. - Comprendre les bases de l'authentification SSH par clé.
- Exploiter les permissions de clés faibles pour obtenir un accès non autorisé.
- Naviguer dans un système distant pour trouver des informations sensibles.
Commençons.
Vérifier la Connectivité à la Cible avec Ping
Dans cette étape, vous commencerez par confirmer que votre machine peut communiquer avec le système cible. La commande ping est un outil de diagnostic réseau standard qui envoie des paquets ICMP à un hôte pour tester sa joignabilité. C'est la première et la plus basique étape de toute reconnaissance réseau.
Votre environnement comprend un système cible accessible via le nom d'hôte target.
Exécutez la commande suivante dans le terminal pour envoyer quatre paquets à target et vérifier qu'il est en ligne :
ping -c 4 target
Vous devriez voir une réponse similaire à celle ci-dessous, confirmant que la cible est joignable et que la connexion réseau est stable. L'adresse IP et les temps de réponse peuvent légèrement différer.
PING target (172.17.0.2) 56(84) bytes of data.
64 bytes from target (172.17.0.2): icmp_seq=1 ttl=64 time=0.091 ms
64 bytes from target (172.17.0.2): icmp_seq=2 ttl=64 time=0.068 ms
64 bytes from target (172.17.0.2): icmp_seq=3 ttl=64 time=0.065 ms
64 bytes from target (172.17.0.2): icmp_seq=4 ttl=64 time=0.067 ms
--- target ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3074ms
rtt min/avg/max/mdev = 0.065/0.072/0.091/0.011 ms
La connectivité étant confirmée, vous pouvez passer à la phase suivante d'énumération.
Scanner les Ports Ouverts avec Nmap
Dans cette étape, vous utiliserez nmap pour scanner la cible à la recherche de ports ouverts et identifier les services qui y sont exécutés. Nmap (Network Mapper) est un outil essentiel pour les professionnels de la sécurité, utilisé pour la découverte de réseaux et l'audit de sécurité.
Nous effectuerons un scan ciblé sur le port 22, le port standard pour SSH, afin de collecter des informations sur la version et la clé hôte.
Exécutez la commande suivante dans votre terminal :
nmap -sV -p 22 --script ssh-hostkey target
-sV: Active la détection de service et de version.-p 22: Spécifie que seul le port 22 doit être scanné.--script ssh-hostkey: Un script du Nmap Scripting Engine (NSE) qui récupère les clés hôtes SSH de la cible.
La sortie ressemblera à ceci :
Starting Nmap 7.80 ( https://nmap.org ) at 2025-09-19 11:56 CST
Nmap scan report for target (172.17.0.2)
Host is up (0.00020s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 0.78 seconds
Le scan confirme que le port 22/tcp est ouvert et exécute OpenSSH 8.9p1. Ces informations sont vitales pour l'étape suivante, où vous tenterez de vous connecter.
Se Connecter à la Cible via SSH
Dans cette étape, vous utiliserez la clé privée SSH fournie pour vous connecter à la cible. L'authentification par clé SSH est généralement plus sécurisée que l'authentification par mot de passe, mais elle repose sur le secret de la clé privée et sur la configuration correcte des permissions de fichiers côté client et serveur.
Un fichier de clé privée, id_rsa, a été placé dans votre répertoire ~/project. Pour que SSH utilise une clé privée, ses permissions doivent être restrictives. Définissez les permissions correctes avec la commande chmod :
chmod 600 id_rsa
Cette commande garantit que seul le propriétaire du fichier a les permissions de lecture et d'écriture, ce qui est une exigence pour la plupart des clients SSH.
Si vous êtes invité à entrer un mot de passe malgré la présence de la clé correcte, le problème réside probablement dans les permissions côté serveur. SSH exige que le répertoire personnel de l'utilisateur n'ait pas de permissions d'écriture pour le groupe ou les autres. Vérifiez les permissions actuelles :
docker exec target-container ls -ld /home/testuser
Si vous voyez des permissions comme drwxrwxrwx (777), corrigez-les :
docker exec target-container chmod 755 /home/testuser
Maintenant, utilisez la clé privée pour vous connecter à target en tant qu'utilisateur testuser.
ssh -i id_rsa testuser@target
-i id_rsa: Spécifie le fichier d'identité (clé privée) à utiliser pour l'authentification.
Il vous sera peut-être demandé de confirmer l'authenticité de l'hôte. Tapez yes et appuyez sur Entrée.
The authenticity of host 'target (172.17.0.2)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
En raison d'une mauvaise configuration du serveur (permissions non sécurisées sur le répertoire personnel de l'utilisateur), le service SSH acceptera la clé et vous aurez accès sans mot de passe. Vous serez connecté et verrez l'invite de commande du shell de la cible.
Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.0-48-generic x86_64)
...
testuser@target:~$
Vous avez réussi à obtenir un accès shell au système cible.
Explorer le Système Cible et Localiser le Flag
Dans cette étape, votre objectif final est de trouver et de lire le fichier flag. Maintenant que vous avez un shell sur le système cible, vous pouvez explorer son système de fichiers comme sur une machine locale. C'est la phase de post-exploitation, où un attaquant recherche des données précieuses.
Vous êtes actuellement dans le répertoire personnel de testuser (/home/testuser). Utilisez la commande ls pour lister les fichiers et répertoires à cet emplacement.
ls
Vous verrez le contenu du répertoire personnel, qui devrait inclure le fichier flag.
testuser@target:~$ ls
flag.txt
testuser@target:~$
Vous avez localisé flag.txt. Maintenant, utilisez la commande cat pour afficher son contenu et révéler le flag.
cat flag.txt
Le terminal affichera la valeur du flag.
testuser@target:~$ cat flag.txt
labex{ssh_k3y_b4s3d_acc3ss_fl4g}
testuser@target:~$
Félicitations ! Vous avez réussi à énumérer le service SSH, à exploiter une vulnérabilité d'authentification basée sur clé, et à capturer le flag. Copiez la valeur du flag pour terminer le laboratoire.
Pour vous déconnecter de la cible, tapez exit et appuyez sur Entrée.
Résumé
Dans ce laboratoire, vous avez réussi à exécuter une attaque simulée ciblant un service SSH mal configuré. Vous avez parcouru les étapes clés d'un test d'intrusion, de la reconnaissance initiale à la post-exploitation.
Vous avez appris à :
- Utiliser
pingpour vérifier qu'une cible est en ligne. - Employer
nmappour effectuer un scan détaillé d'un port SSH, identifiant la version du service. - Comprendre les exigences côté client pour l'authentification par clé SSH, y compris les permissions correctes de la clé privée (
chmod 600). - Exploiter une vulnérabilité côté serveur liée à des permissions de fichiers non sécurisées pour obtenir un accès shell non autorisé.
- Naviguer dans un système de fichiers distant pour localiser et récupérer un flag.
Cet exercice démontre un principe de sécurité essentiel : la sécurité est une chaîne, et un seul maillon faible — dans ce cas, des permissions de répertoire incorrectes — peut compromettre l'ensemble du système, même lorsque des mécanismes d'authentification robustes comme les clés SSH sont utilisés. Assurez-vous toujours que vos configurations SSH et vos permissions de fichiers sont renforcées conformément aux meilleures pratiques de sécurité.



