Théme de la semaine : Exploitation

Metasploit : Première attaque et exploitation d’une vulnérabilité

Lecture: 10 minutes
Accueil • CyberSécurité • Metasploit : Première attaque et exploitation d’une vulnérabilité

Maintenant que Metasploit est installé sur votre machine, il est temps de passer aux choses sérieuses et d’entrer dans le vif du sujet. Dans ce deuxième volet, vous allez enfin apprendre à passer à l’offensive en réalisant vos premiers tests d’intrusion et en exploitant des vulnérabilités concrètes.

Après la théorie, nous allons configurer ensemble un exploit pas à pas, décrypter la logique d’une cyberattaque et manier les commandes indispensables pour réussir vos premiers pentests en toute sécurité, même si vous débutez.

La procédure d’offensive avec Metasploit

Reprenons le déroulement de la procédure du chapitre précédent :

  • Recherche du correctif : Nous avons ouvert Metasploit et tapé la commande search en utilisant le nom du correctif manquant (ou de la vulnérabilité) détecté par Nmap.
  • Résultat de la recherche : Metasploit a trouvé une attaque (un exploit) adaptée et nous a affiché ses informations.
  • Identité de l’exploit : Il précise le nom complet de l’exploit ainsi que son dossier d’accès.
  • Détails complémentaires : Il affiche aussi son niveau d’efficacité (son rang) et un résumé rapide de ce qu’il fait.

Maintenant que les bases sont posées et que nous savons comment relier les découvertes de Nmap (ou d’un autre outil) à Metasploit, entrons dans le vif du sujet. Nous allons détailler pas à pas cette procédure pour vous guider concrètement dans la mise en œuvre de cet exploit et réussir votre premiers test en toute simplicité.

Nous allons prendre l’exemple d’une offensive sur une connexion SSH.

Étape 1 : Identification de la faille

Nmap permet de détecter des informations et des vulnérabilités sur une connexion SSH, mais il faut comprendre comment il fonctionne.

Nmap n’est pas un outil d’exploitation, mais un outil de reconnaissance et de cartographie. Pour le SSH, il intervient de deux manières principales :

  • La détection de version : En scannant le port SSH (le port 22 par défaut), Nmap ne se contente pas de dire s’il est ouvert. Il interroge le service pour connaître la version exacte du logiciel utilisé (par exemple,une vieille version d’OpenSSH). C’est cette version qui permettra ensuite de chercher une faille correspondante.
  • Les scripts de vulnérabilités (NSE) : Nmap intègre un moteur de scripts (le Nmap Scripting Engine) qui possède des scripts spécifiques au protocole SSH (commençant par le préfixe ssh-). Certains de ces scripts permettent de tester directement si le serveur est vulnérable à certaines faiblesses connues ou de repérer des configurations peu sécurisées.

Nmap va vous donner l’équivalent de sa « carte d’identité » et de son état de santé, vous permettant ainsi de savoir si une attaque via Metasploit est possible sur ce service SSH.

👉 Tout savoir sur la détection d’une connexion SSH avec Nmap.

Pour illustrer notre démarche avec Metasploit, prenons l’exemple d’une vulnérabilité classique liée au protocole SSH : la faille libssh (CVE-2018-10933).

C’est une faille critique présente dans certaines versions de la bibliothèque libssh (utilisée pour gérer des connexions SSH) permet à un attaquant de contourner complètement l’authentification et d’accéder au serveur sans fournir de mot de passe.

La détection avec Nmap : En effectuant un scan de version sur le port SSH :

nmap -sV <IP_de_la_cible>

Nmap analyse la bannière du service et relève le numéro de version exact de la bibliothèque. Si le rapport indique une version vulnérable, il y associe souvent l’identifiant CVE-2018-10933.

L’exploitation avec Metasploit : Dans le prochain chapitre, nous utiliserons cet identifiant ou cette information dans Metasploit pour rechercher l’exploit correspondant (exploit/multi/ssh/libssh_auth_bypass) et tester la sécurité de notre cible.

En savoir plus sur la faille CVE-2018-10933

Pour obtenir des informations détaillées sur la faille CVE-2018-10933 (notre exemple sur libssh), plusieurs sources et méthodes s’avèrent indispensables :

La base de données officielle NVD (National Vulnerability Database) : En recherchant CVE-2018-10933 sur le site du NIST, vous obtiendrez le score de gravité (CVSS), la description technique officielle et la liste exacte des versions de la bibliothèque libssh qui sont vulnérables.

Faille CVE découverte avec Nmap pour l'utiliser avec Metasploit

👉 Tout savoir sur les numéros de failles CVE

L’avis de sécurité officiel de libssh : Le site officiel du projet libssh répertorie les alertes de sécurité (security advisories). C’est la source idéale pour comprendre la cause profonde de la faille (ici, un problème dans la gestion des messages d’authentification où le serveur acceptait par erreur un statut de succès prématuré).

Directement depuis Metasploit : Une fois l’outil ouvert dans votre terminal, vous pouvez interroger directement le module d’exploitation pour lire sa fiche technique complète, ses prérequis et les liens de référence associés grâce à la commande info depuis le msfconsole :

info auxiliary/scanner/ssh/libssh_auth_bypass

Ces différentes ressources vous permettront d’avoir une vision à la fois théorique et pratique du mécanisme de cette attaque avant de la manipuler.

Informations sur ne faille CVE depuis la msfconsole de Metasploit

Le module de CVE-2018-10933 est classé dans auxiliary/scanner/ssh/. Si vous obtenez Invalid module, recherchez la CVE dans votre installation :

search cve:2018-10933

Si le module apparaît à l’index 0, tape info 0 pour afficher sa fiche directement. info affiche les informations du module sans lancer de test.

Étape 2 : Recherche d’un exploit sur Metasploit

Maintenant que Nmap a pointé du doigt la faille CVE-2018-10933 sur la machine de test (ou machine cible), il est temps d’ouvrir Metasploit pour trouver le moyen d’agir. Pour cela, la commande incontournable est search.

Elle fait office de passerelle entre la vulnérabilité détectée lors de votre scan et les modules d’attaque intégrés dans l’outil.

search CVE-2018-10933

En tapant simplement cette commande dans votre console Metasploit, vous demandez au logiciel de parcourir sa base de données pour identifier l’exploit exact capable de cibler ce problème précis.

Une fois la recherche lancée, Metasploit vous renvoie une liste de résultats correspondants. C’est ici qu’il faut analyser les propositions pour trouver l’attaque adaptée. Vous y découvrirez le nom exact de l’exploit, son chemin d’accès dans l’arborescence, ainsi qu’un classement indiquant sa fiabilité. Pour éviter de faire dysfonctionner ou de planter le service SSH de votre cible, veillez toujours à privilégier les exploits de rang le plus élevé, qui garantissent une exécution plus propre et stable.

Avant de vous lancer tête baissée, il est indispensable de consulter les détails de l’attaque sélectionnée pour comprendre son fonctionnement. Pour ce faire, vous pouvez afficher toutes les informations de l’attaque en utilisant la commande info suivie du chemin complet du module. Cela vous affichera une description précise, les options requises et les liens de référence techniques. C’est l’étape de préparation idéale pour valider que tout est en ordre avant de passer concrètement à l’offensive.

Recherche d'une faille CVE avec search dans Metasploit

Ce tableau vous montre que Metasploit a trouvé un outil (un module) correspondant à la faille CVE-2018-10933 :

  • Le nom du module : Il s’agit d’un module d’assistance (auxiliary) nommé libssh_auth_bypass, conçu pour contourner l’authentification SSH.
  • Les actions possibles : Le résultat vous propose deux options principales listées en dessous :
    • Execute : pour exécuter une commande unique sur la cible.
    • Shell : pour ouvrir un terminal complet et prendre le contrôle de la machine.

Comment obtenir plus d’informations sur ce module ?

Pour en savoir plus sur son fonctionnement exact et voir les options que vous devez configurer (comme l’adresse IP de votre cible), vous pouvez interroger directement Metasploit grâce à la commande info.

Il vous suffit de taper l’une de ces deux commandes dans votre console :

info 0

puisqu’il porte le numéro 0 dans le tableau

Ou

info auxiliary/scanner/ssh/libssh_auth_bypass

Cela affichera une fiche technique détaillée avec la description complète de l’attaque et les paramètres requis.

La commande info sur metasploit
  • L’identité du module : Ce rapport vous confirme que vous consultez la fiche technique du module libssh_auth_bypass, découvert le 16 octobre 2018. Il sert à exploiter une faille d’authentification sur le protocole SSH.
  • Les actions disponibles : Le module propose deux modes de fonctionnement. Par défaut (marqué par une petite flèche =>), il est configuré sur Shell, ce qui signifie qu’il va tenter de vous ouvrir un terminal de commande direct sur la machine cible.
  • Les options de configuration essentielles : Le tableau vous montre ce que vous devez configurer avant de lancer l’attaque :
    • RHOSTS : C’est la ligne la plus importante (marquée comme obligatoire, yes). C’est ici que vous devrez indiquer l’adresse IP de votre machine cible.
    • RPORT : Il est réglé par défaut sur 22, ce qui correspond au port standard d’une connexion SSH, vous n’avez donc rien à changer si votre cible utilise ce port.
  • La description de la faille : Le texte vous explique le mécanisme technique : certaines versions de libssh(de la 0.6.0 à la 0.7.5 et de la 0.8.0 à la 0.8.3) acceptent par erreur qu’on leur dise « je suis connecté » sans vérifier le mot de passe, ce qui permet de contourner l’authentification.
  • Les références : À la fin, vous retrouvez les liens officiels vers la base de données des failles (CVE-2018-10933) pour creuser le sujet si vous le souhaitez.

Lancer l’exploit

Maintenant que vous avez identifié le module et exploré ses fiches techniques, il est temps de passer à la phase décisive : configurer la méthode d’attaque, lancer l’exploit, et enfin prendre le contrôle de la machine cible pour y installer un accès graphique comme VNC par exemple.

Avant de lancer l’attaque, il faut définir ce que vous allez faire une fois la porte entrouverte par la faille. C’est ici qu’intervient la commande show payloads.

Afficher les charges utiles

Pour pouvoir afficher les charges utiles, vous devez d’abord charger officiellement le module avec la commande use. Suivez ces étapes :

Tapez la commande pour activer le module :

use 0

Ou

use auxiliary/scanner/ssh/libssh_auth_bypass

Remarquez que votre invite de commande change et intègre le nom du module.

Tapez ensuite la commande au pluriel :

show payloads

Si la commande fonctionne, Metasploit affichera un tableau listant les charges utiles compatibles. Si le tableau s’affiche correctement, c’est que le module est bien sélectionné.

La commande show payloads

Pour rappel, le payload est la charge utile, c’est-à-dire le comportement ou le programme qui s’exécute une fois que l’exploit a réussi. 

👉 Tout savoir sur les payload.

En tapant show payloads dans votre console Metasploit, vous découvrez toutes les options de communication disponibles. Dans notre cas, on privilégiera l’utilisation d’un reverse shell (ou shell inversé). 

Contrairement à une connexion classique où votre machine essaie d’entrer de force, le reverse shell demande à la machine cible de se connecter elle-même vers votre machine. C’est une technique très pratique pour contourner les pare-feux de sécurité qui bloquent les connexions entrantes. 

L'attaque par reverse shell
Le pentesteur pourra alors envoyer des commandes

Vous pouvez sélectionner ce type de comportement en le configurant avec la commande :

set PAYLOAD

Mais, dans notre exemple, la commande set payload ne fonctionnera pas tout simplement parce que le module que nous utilisons (auxiliary/scanner/ssh/libssh_auth_bypass) est un module de type auxiliary (un module d’assistance ou de scan) et non un module d’exploitation classique (exploit/).

Dans Metasploit, seuls les modules d’exploitation nécessitent de choisir et de configurer un payload externe.Les modules de type auxiliary intègrent déjà leur propre logique d’action en interne. Comme nous l’avons vu dans la fiche d’information (info 0), ce module propose directement une action intégrée nommée Shell qui permet d’ouvrir un terminal sur la cible.

Par conséquent, vous n’avez pas besoin de piocher un payload dans une liste. Pour avancer vers notre objectif d’installer VNC, il vous suffit de procéder ainsi :

  1. Vérifiez que l’action est bien configurée sur Shell (c’est généralement le cas par défaut, repérable par la petite flèche => dans le info 0).
  2. Indiquez l’adresse IP de votre machine de test avec la commande : set RHOSTS <IP_de_la_cible>.
  3. Lancez l’attaque avec la commande run.

Si la cible est vulnérable, le module va exploiter la faille libssh et vous ouvrir directement un terminal de commande interactif. 

C’est une fois cet accès obtenu que vous pourrez taper vos commandes habituelles (comme l’installation de votre serveur VNC) directement à l’intérieur de la machine cible.


Une fois votre payload choisi, il ne reste plus qu’à finaliser les derniers réglages indispensables, à commencer par l’adresse IP de votre machine cible que vous indiquez avec la commande :

set RHOSTS <IP_de_la_cible>

Vous êtes désormais prêt à lancer l’offensive. Il vous suffit de taper simplement la commande :

run

Ou

exploit

L’outil entre en action, applique la faille libssh pour tromper le système d’authentification du serveur, et si la cible est bien vulnérable, il vous ouvre un accès direct sous la forme d’un terminal de commande interactif.

Vous voilà à l’intérieur du système distant avec un accès direct par la ligne de commande. C’est à partir de cet instant que vous pouvez réaliser des actions post-exploitation, comme installer VNC pour obtenir un bureau à distance. 

Depuis le terminal que Metasploit vient de vous ouvrir sur la cible, il vous suffit d’exécuter les commandes d’installation adaptées au système d’exploitation distant (par exemple, sur un système Linux type Debian/Ubuntu, cela ressemble à une mise à jour des paquets suivie de l’installation d’un serveur VNC léger comme apt install tightvncserver). 

Une fois le paquet installé, vous lancez le service VNC à distance et définissez un mot de passe de sécurité. Vous pourrez alors vous y connecter depuis votre propre machine à l’aide d’un client VNC pour piloter la cible de manière totalement graphique.

Résumé de la chronologie de l’attaque avec Metasploit

Pour résumer, une fois que vous lancez l’attaque, Metasploit fait tout le travail en coulisses en exploitant la faille libssh que vous avez repérée avec Nmap.

En quelques secondes, si la cible est bien vulnérable, la connexion s’établit et vous prenez le contrôle du système. Grâce à l’installation de l’outil VNC, vous obtenez un accès visuel et pouvez interagir directement avec le bureau de la machine distante depuis votre propre écran, exactement comme si vous étiez assis devant. C’est l’étape gratifiante où la théorie et les scans se concrétisent par un test d’intrusion réussi !

Pour mener à bien cette attaque, voici la chronologie des commandes à retenir dans Metasploit :

  1. Démarrer l’outil : Ouvrez votre terminal et lancez Metasploit avec la commande msfconsole.
  2. Chercher la vulnérabilité : Tapez search CVE-2018-10933 pour retrouver le module correspondant à la faille détectée au préalable par Nmap.
  3. Activer le module : Utilisez la commande use suivie du chemin complet du module d’assistance (auxiliary/scanner/ssh/libssh_auth_bypass).
  4. Vérifier les paramètres : Entrez show options pour lister tous les réglages modifiables.
  5. Configurer la cible : Indiquez l’adresse IP de votre machine de test avec la commande set RHOSTS <IP_de_la_cible>.
  6. Lancer l’action : Tapez simplement run (ou exploit) pour exécuter la procédure et exploiter la faille.

Contrairement aux environnements Windows qui se prêtent facilement aux interfaces graphiques, cibler un serveur SSH sous Linux donne généralement un accès direct à un terminal de commande (shell). C’est par ce canal direct que vous prendrez le contrôle de la machine et que vous pourrez, si vous le souhaitez, installer des outils de gestion à distance. Metasploit offre une souplesse immense pour combiner les techniques selon la nature de votre cible !

Bien comprends la stratégie d’attaque

Voici l’essentiel à retenir, adapté à notre pratique :

  • La charge de type « bind » : C’est une connexion directe où votre machine d’attaque vient frapper à la porte du serveur distant. Votre ordinateur initie la connexion vers la cible, qui l’attend passivement.
  • La charge de type « reverse » (inversée) : C’est le cas le plus courant et le plus pratique. Une fois la faille exploitée, c’est la machine cible qui se connecte d’elle-même vers votre machine. Cette méthode est redoutable car elle permet de contourner la grande majorité des pare-feux de sécurité qui bloquent les connexions entrantes,mais laissent souvent sortir le trafic.

Bien que notre module libssh_auth_bypass gère l’ouverture du terminal directement en interne, retenir cette logique entre connexions directes et inversées vous sera indispensable pour tous vos futurs tests d’intrusion, que vous attaquiez des environnements Linux ou Windows.


Vous voilà armé pour mener à bien un test d’intrusion structuré : vous savez désormais détecter une vulnérabilité avec Nmap (telle que la faille libssh CVE-2018-10933), la relier aux modules adaptés dans Metasploit, lancer l’attaque et exploiter l’accès obtenu pour réaliser des actions de post-exploitation comme l’installation de VNC. Cette maîtrise de la chaîne complète — de la reconnaissance à la prise de contrôle — constitue la base indispensable de tout test d’intrusion réussi.