Énumération SSH et Accès par Clé

LinuxBeginner
Pratiquer maintenant

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 ping pour vérifier qu'une cible est en ligne.
  • Employer nmap pour 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é.