TP3 : Attaque d'une base de données MySQL et Extraction d'informations sensibles - tsylla/IT381_TP GitHub Wiki
Dans ce TP, nous nous introduirons dans une base de données à distance afin de retrouver des informations sensibles. Nous verrons comment il rapide et facile d'attaquer une base de données protégée avec un mot de passe que l'on peut retrouver dans le dictionnaire en utilisant Metasploit. Nous utiliserons le scanneur de vulnérabilité OpenVAS afin de détecter les vulnérabilités de la VM.
Comme prérequis à ce TP, nous aurons besoin de Metasploitable 2. En effet, le serveur MySQL installé sur cette VM héberge une base de données contenant des données sensibles comme les informations sur les carte de crédit, les mots de passe, etc. Nous aurons besoin d'installer OpenVAS.
Paramétrer corrèctement les VMs en mettant leurs cartes réseaux sur le réseau privé de l'hôte.
Relevez l'adresse IP de Metasploitable 2. Nous allons vérifier le port d'écoute du serveur MySQL de la machine victime afin de connaitre son numéro et de
voir s'il est ouvert ou fermé.
nmap -p- -sV ip_machine_victime
- Quel est le résultat ? Le port est-il ouvert ? Sinon, qu'est ce qu'il faut faire selon vous ? En plus de l'état du port, vous devriez avoir dans le résultat les informations concernant la version des services.
Par défaut, MySQL est installé sur Metasploitable 2 ou 3 sans mot de passe root. Pour vérifier cette hypothèse, lancer un scan OpenVAS sur Metasploitable
Vous devriez avoir plusieurs vulnérabilité. Mais nous nous intéresserons à la vulnérabilité Absence de mot de passe sur le compte (ou un message
similaire). Nous allons corriger cette faille en définissant un mot de passe sur le compte root de MySQL. Pour ce faire, passer en root sur Metasploitable 2 :
sudo su
A la demande de mot de passe, saisissez msfadmin. Une fois root, changer le mot de passe root.
mysqladmin -uroot password msfadmin
Testez la connexion au serveur avec le nouveau de mot de passe :
mysql -uroot -pmsfadmin -e 'show databases;'
Allez dans le répertoire /var/tmp. Nous allons récuperer une partie d'un dictionnaire de mot de passe et créer un petit dictionnaire avec cela. Ensuite, nous ajouterons
quelques mots de passe à ce nouveau dictionnaire.
cd /var/tmp
grep -v "^#" /usr/share/john/password.lst | head > mot_de_passe.txt
echo "msfadmin" >> mot_de_passe.txt
echo "root" >> mot_de_passe.txt
echo "toor" >> mot_de_passe.txt
cat mot_de_passe.txt
- Quel est la sortie sur l'écran ?
Lancez la console metasploit. Recherchez l'exploit MySQL via la commande search
de la console metasploit.
search mysql
Dans le résultat qui s'affiche, sélectionnez et copiez la ligne se terminant par mysql_login
. En effet, il s'agit d'un exploit permettant de réaliser
des attaques de type Bruteforce sur les mots de passes pour la connexion à MySQL.
Utiliser cette exploit :
use *******mysql_login
Utiliser la commande show options
afin de voir la liste des options pour la mise en oeuvre de cette exploit.
show options
Dans le résultat qui s'affiche, l'on voit trois options intéressantes : PASS_FILE, RHOST. Le premier n'est pas obligatoire pour l'exploit mais le second l'est. Dans le
où nous avons un compte root sans mot de passe par exemple, il n'est pas nécessaire de spécifier le PASS_FILE. Il n'est pas également nécessaire de spécifier
RPORT car mysql tourne sur son port par défaut. L'option PASS_FILE correspond au dictionnaire de mot de passe qui sera utilisé par l'exploit pour l'attaque.
set PASS_FILE /var/tmp/mot_de_passe.txt
set RHOST adresse_ip_metasploitable_2
set USERNAME root
A présent vérifiez les options pour voir si les modifications ont été prise en compte. Une fois cela effectué, lancer l'exploit.
3. Qu'est ce qui se produit une fois l'exploit est lancé ? Est ce que l'exploit réussi ?
-
Selon vous, quelle est la raison du succès de cet exploit ? Que faut-il faire pour empécher une telle attaque à l'avenir ?
-
Mettez en oeuvre votre solution et relancer l'exploit. Réussi-t-elle ?
Remettez la configuration de MySQL à l'état d'avant le 1er exploit. Réalisez l'exploit à nouveau.
Une fois l'exploit mysql_login réussi, nous utiliserons mysql_HKD.pl pour extraire les données sensibles de la base de données. C'est un outil post-exploit
à utiliser lorsque vous trouvez le mot de passe de la base de données. Il permet de chercher les chaines sensibles contenant les mots tels que credit card
ou password ou ce que vous cherchez toutes les bases de données, tables et champs.
Téléchargez le script à cette adresse.
NB: L'utilisation du script est dans un cadre académique. Toutes autres utilisations non autorisées n'est pas de la responsabilité de l'école.
- Téléchargez le fichier
- Renommez le fichier vers mysql_HKD.pl
- Changez les droits du fichier afin de le rendre exécutable
- Vérifiez que le fichier est bien devenu exécutable
. A présent, exécutez le script pour chercher des chaines contenant le mot credit :
./mysql_HKD.pl -ip adresse_ip_metasploitable_2 -u root -pw msfadmin -s "credit"
Vous remarquez que le script affiche toutes les bases de données ou tables qui contiennent la chaine credit.
6. Comment le script affiche les contenus sensibles des tables de la base de données qu'il a trouvé et qui contiennent les informations concernant les
cartes de crédit ?
-
Utilisez le script pour rechercher comme chaine password.
-
Comment le script affiche les contenus sensibles des tables de la base de données qu'il a trouvé et qui contiennet les informations concernant les mot de passes?
-
Utilisez le script pour rechercher comme chaine credit|password.
-
Comment le script affiche les contenus sensibles des tables de la base de données qu'il a trouvé et qui contiennet les informations concernant les cartes de crédit ou mot de passes?
-
Proposez les solutions pour empêcher une telle attaque à l'avenir.