Travaux pratiques – Attaquer une base de données mySQL
(Version de l'instructeur)
Remarque à l'intention de l'instructeur : le texte en rouge ou surligné en gris apparaît uniquement dans la
version 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.
2018 - aa Cisco et/ou ses filiales. Tous droits réservés. Document public de Cisco Page 1 sur 10 www.netacad.com
Travaux pratiques – Attaquer une base de données mySQL
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.
Question :
Quelles sont les deux adresses IP impliquées dans cette attaque par injection SQL selon les informations
affichées ?
Saisissez vos réponses ici
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.
2018 - aa Cisco et/ou ses filiales. Tous droits réservés. Document public de Cisco Page 2 sur 10 www.netacad.com
Travaux pratiques – Attaquer une base de données mySQL
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.
2018 - aa Cisco et/ou ses filiales. Tous droits réservés. Document public de Cisco Page 3 sur 10 www.netacad.com
Travaux pratiques – Attaquer une base de données mySQL
b. Dans le champ Find, saisissiez 1=1. Cliquez sur Find Next.
2018 - aa Cisco et/ou ses filiales. Tous droits réservés. Document public de Cisco Page 4 sur 10 www.netacad.com
Travaux pratiques – Attaquer une base de données mySQL
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
vérifie donc 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.
2018 - aa Cisco et/ou ses filiales. Tous droits réservés. Document public de Cisco Page 5 sur 10 www.netacad.com
Travaux pratiques – Attaquer une base de données mySQL
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.
2018 - aa Cisco et/ou ses filiales. Tous droits réservés. Document public de Cisco Page 6 sur 10 www.netacad.com
Travaux pratiques – Attaquer une base de données mySQL
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.
Question :
Quelle est la version ?
Saisissez vos réponses ici
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.
2018 - aa Cisco et/ou ses filiales. Tous droits réservés. Document public de Cisco Page 7 sur 10 www.netacad.com
Travaux pratiques – Attaquer une base de données mySQL
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.
Question :
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') ?
Saisissez vos réponses ici
La base de données répond avec une sortie beaucoup plus courte, qui est filtrée en fonction de la
présence du mot « users ».
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.
2018 - aa Cisco et/ou ses filiales. Tous droits réservés. Document public de Cisco Page 8 sur 10 www.netacad.com
Travaux pratiques – Attaquer une base de données mySQL
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 !
Question :
À quel utilisateur correspond la valeur de hash de mot de passe 8d3533d75ae2c3966d7e0d4fcc69216b ?
Saisissez vos réponses ici
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.
Question :
Quel est le mot de passe en texte clair ?
Saisissez vos réponses ici
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 ?
Saisissez vos réponses ici
2018 - aa Cisco et/ou ses filiales. Tous droits réservés. Document public de Cisco Page 9 sur 10 www.netacad.com
Travaux pratiques – Attaquer une base de données mySQL
Les sites web reposent généralement sur des bases de données et utilisent le langage SQL. La
gravité d'une attaque par injection de code SQL dépend du hacker.
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 ?
Saisissez vos réponses ici
Les réponses varient, mais doivent inclure: filtrer les entrées 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, …
Fin du document
2018 - aa Cisco et/ou ses filiales. Tous droits réservés. Document public de Cisco Page 10 sur 10 www.netacad.com