17.2.6 – Travaux pratiques – Attaquer une base de données MySQL

0

17.2.6 – Travaux pratiques – Attaquer une base de données mySQL

Remarque à l’intention de l’instructeur : la couleur de police rouge ou les surlignages gris indiquent que le texte n’apparaît que dans la copie de l’instructeur.

Objectifs

Au cours de ces travaux pratiques, vous aurez accès à un fichier PCAP provenant d’une précédente attaque contre une base de données SQL.

Partie 1: Ouvrir Wireshark et charger le fichier PCAP.

Partie 2: Examiner l’attaque par Injection SQL.

Partie 3: L’attaque par injection SQL continue…

Partie 4: L’attaque par injection SQL fournit des informations système.

Partie 5: L’attaque par injection SQL et les informations des tables.

Partie 6: L’attaque par injection SQL se termine.

Contexte/scénario

Les attaques par injection SQL permettent aux hackers de taper des instructions SQL dans un site web et de recevoir une réponse de la base de données. Ils peuvent ainsi altérer les données se trouvant dans la base de données, usurper des identités et commettre divers méfaits.

Un fichier PPCE a été créé pour que vous puissiez voir une précédente attaque contre une base de données SQL. Vous allez également voir des attaques de base de données SQL et répondre aux questions.

Ressources requises

  • Poste de travail CyberOps VM

Instructions

Utilisez Wireshark, un analyseur de paquets réseau courant, pour analyser le trafic réseau. Après avoir lancé Wireshark, ouvrez une capture réseau précédemment enregistrée pour étudier les différentes étapes d’une attaque par injection SQL contre une base de données SQL.

Partie 1 : Ouvrir Wireshark et charger le fichier PCAP.

Vous pouvez ouvrir l’application Wireshark de différentes manières sur un poste de travail Linux.

a. Démarrez le poste de travail virtuel CyberOps.

b. Cliquez sur Applications > CyberOPS > Wireshark sur le bureau et accédez à l’application Wireshark.

c. Dans l’application Wireshark, cliquez sur Open au milieu de l’application sous Files.

d. Dans le répertoire /home/analyst/ recherchez lab.support.files. Dans le répertoire lab.support.files recherchez et ouvrez le fichier SQL_Lab.pcap.

e. Le fichier PCAP s’ouvre dans Wireshark et affiche le trafic réseau capturé. Ce fichier de capture couvre une période de 8 minutes (441 secondes), soit la durée de cette attaque par injection SQL.

Quelles sont les deux adresses IP impliquées dans cette attaque par injection SQL selon les informations affichées ?

10.0.2.4 et 10.0.2.15

Partie 2 : Examiner l’attaque par Injection SQL.

Au cours de cette étape, vous allez visualiser le début d’une attaque.

a. Dans la capture Wireshark, cliquez avec le bouton droit de la souris sur la ligne 13 et sélectionnez Follow > HTTP Stream. La ligne 13 a été choisie, car il s’agit d’une requête GET HTTP. Cette fonction permet de suivre le flux de données tel que la couche application le voit et mène au test des requêtes à la recherche d’injection de code SQL.

Le trafic de la source s’affiche en rouge. La source a envoyé une requête GET à l’hôte 10.0.2.15. En bleu, l’appareil de destination répond à la source.

b. Dans le champ Find, saisissiez 1=1. Cliquez sur Find Next.

c. Le hacker a saisi une requête (1=1) dans une boîte de recherche d’ID d’utilisateur sur la cible 10.0.2.15 pour savoir si l’application est vulnérable à l’injection de code SQL. Au lieu de répondre avec un message d’échec de connexion, l’application répond avec un enregistrement d’une base de données. Le hacker a donc vérifié que la base de données répond lorsqu’il tape une commande SQL. La chaîne de recherche 1=1 crée une instruction SQL qui sera toujours vraie. Dans l’exemple, quelle que soit la requête saisie dans le champ, elle sera toujours vraie.

d. Fermez la fenêtre Follow HTTP Stream.

e. Cliquez sur Clear display filter pour afficher la conversation Wireshark entière.

Partie 3 : L’attaque par injection SQL continue…

Au cours de cette étape, vous allez voir la suite d’une attaque.

a. Dans la capture Wireshark, cliquez avec le bouton droit de la souris sur la ligne 19 et sélectionnez Follow > HTTP Stream.

b. Dans le champ Find, saisissiez 1=1. Cliquez sur Find Next.

c. Le hacker a saisi une requête (1′ or 1=1 union select database(), user()#) dans une boîte de recherche d’ID d’utilisateur sur la cible 10.0.2.15. Au lieu de répondre avec un message d’échec de connexion, l’application répond avec les informations suivantes :

Le nom de la base de données est dvwa et l’utilisateur de la base de données est root@localhost.

Plusieurs comptes d’utilisateurs sont également affichés.

d. Fermez la fenêtre Follow HTTP Stream.

e. Cliquez sur Clear display filter pour afficher la conversation Wireshark entière.

Partie 4 : L’attaque par injection SQL fournit des informations système.

Le hacker continue et commence à cibler des informations plus précises.

a. Dans la capture Wireshark, cliquez avec le bouton droit de la souris sur la ligne 22 et sélectionnez Follow > HTTP Stream. Le trafic source indiqué en rouge envoie la requête GET à l’hôte 10.0.2.15. En bleu, l’appareil de destination répond à la source.

b. Dans le champ Find, saisissiez 1=1. Cliquez sur Find Next.

c. Le hacker a saisi une requête (1′ or 1=1 union select null, version ()#) dans une boîte de recherche d’ID d’utilisateur sur la cible 10.0.2.15 pour trouver l’identifiant de la version. Notez l’identificateur de version à la fin de la sortie juste avant le </pre>.</div> code HTML de fermeture.

Quelle est la version ?

MySQL 5.7.12-0

d. Fermez la fenêtre Follow HTTP Stream.

e. Cliquez sur Clear display filter pour afficher la conversation Wireshark entière.

Partie 5 : L’attaque par injection SQL et les informations des tables.

Le hacker sait qu’il y a de nombreuses tables SQL contenant beaucoup d’informations. Le hacker essaie de les trouver.

a. Dans la capture Wireshark, cliquez avec le bouton droit de la souris sur la ligne 25 et sélectionnez Follow > HTTP Stream. La source est indiquée en rouge. L’appareil source a envoyé une requête GET à l’hôte 10.0.2.15. En bleu, l’appareil de destination répond à la source.

b. Dans le champ Find, saisissez les utilisateurs. Cliquez sur Find Next.

c. Le hacker a saisi une requête (1’or 1=1 union select null, table_name from information_schema.tables#) dans une boîte de recherche d’ID d’utilisateur sur la cible 10.0.2.15 pour voir toutes les tables de la base de données. Une sortie indiquant de nombreuses tables est générée, car le hacker a spécifié « null » sans plus de précision.

Qu’obtient le hacker avec la commande modifiée (1′ OR 1=1 UNION SELECT null, column_name FROM INFORMATION_SCHEMA.columns WHERE table_name=’users’) ?

La base de données répondrait avec une sortie beaucoup plus courte filtrée par l’occurrence du mot « utilisateurs ».

d. Fermez la fenêtre Follow HTTP Stream.

e. Cliquez sur Clear display filter pour afficher la conversation Wireshark entière.

Partie 6 : L’attaque par injection SQL se termine.

L’attaque se termine ayant permis au hacker de récupérer le meilleur butin possible : les valeurs de hash des mots de passe.

a. Dans la capture Wireshark, cliquez avec le bouton droit de la souris sur la ligne 28 et sélectionnez Follow > HTTP Stream. La source est indiquée en rouge. L’appareil source a envoyé une requête GET à l’hôte 10.0.2.15. En bleu, l’appareil de destination répond à la source.

b. Cliquez sur Find et tapez 1=1. Recherchez cette entrée. Lorsque le texte est trouvé, cliquez sur Cancel dans la zone de recherche de texte.

Le hacker a saisi une requête (1’or 1=1 union select user, password from users#) dans une boîte de recherche d’ID d’utilisateur sur la cible 10.0.2.15 pour extraire les noms d’utilisateurs et les valeurs de hash des mots de passe !

À quel utilisateur correspond la valeur de hash de mot de passe 8d3533d75ae2c3966d7e0d4fcc69216b ?

1337

c. Utilisez un site web tel que https://crackstation.net/ et copiez cette valeur dans le déchiffreur de valeur de hash de mots de passe pour le pirater.

Quel est le mot de passe en texte clair ?

charley

d. Fermez la fenêtre Follow HTTP Stream. Fermez les fenêtres ouvertes.

Questions de réflexion

1. Quel est le risque encouru lorsque des plates-formes utilisent le langage SQL ?

Les sites Web sont généralement pilotés par une base de données et utilisent le langage SQL. La gravité d’une attaque par injection SQL dépend de l’attaquant.

2. Naviguez sur Internet et recherchez comment «empêcher les attaques par injection SQL». Quelles sont les 2 méthodes ou mesures à appliquer pour empêcher les attaques par injection SQL ?

Les réponses varient, mais doivent inclure : filtrer les entrées de l’utilisateur, déployer un pare-feu d’application Web, désactiver les fonctionnalités/capacités de base de données inutiles, surveiller les instructions SQL, utiliser des paramètres avec des procédures stockées et utiliser des paramètres avec SQL dynamique.

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments