REPUBLIQUE DU SENEGAL
Un peuple-un but-une foi
Ministère de l’Enseignement Supérieur, de la Recherche et de l’Innovation Direction de
l’Enseignement Supérieur Privé
Institut Supérieur d’Informatique
ISI
Travaux Pratique
Attaque par injection SQL
Année Académique : 2024-2025
Présenté par: Sous la direction de :
Emmanuel NGOUWA B. Professeurs M. MASSAMBA Lo
INTRODUCTION
L'injection SQL est un type d'attaque par injection de code qui permet à un attaquant
d'injecter et d'exécuter des requêtes SQL malveillantes dans un serveur de base de
données d'applications Web, leur accordant l'accès. C'est le moyen le plus courant de
tirer parti des bogues de sécurité. Certaines attaques par injection SQL peuvent révéler
des informations confidentielles sur les clients, tandis que d'autres peuvent effacer une
base de données. Certaines applications sont accessibles à distance. L'injection SQL est
une méthode d'attaque relativement simple et largement utilisée. Les attaques SQLI
doivent être évitées et détectées dans le cadre de toute évaluation de la sécurité.
SQLMAP : Sqlmap est un outil de test d'intrusion open source permettant de détecter et
d'exploiter les vulnérabilités d'injection SQL, ainsi que de prendre le contrôle des
serveurs de bases de données. Il comprend un moteur de détection puissant, diverses
fonctionnalités spécialisées pour le testeur d'intrusion ultime et un large éventail
d'options qui couvrent l'empreinte digitale de la base de données, la récupération des
données à partir des bases de données, l'accès au système de fichiers sous-jacent et
l'exécution de commandes hors bande sur le système d'exploitation. Système.
Pour commencer, nous utiliserons l'outil automatisé sqlmap de Kali Linux pour effectuer
l'injection SQL. On utilise testphp.vulnweb.com. Il s'agit d'un site de démonstration pour
le scanner de vulnérabilité Web Acunetix.
NB : Pour accéder à l’environnements de notre pentesting, il est impératif de se connecter
via le vpn contenu sur le site. https://www.vpnbook.com/freevpn.
La démo de connexion au vpn et mise en place du lab est contenu dans la vidéo à
l’adresse :
https://drive.google.com/file/d/1iwjwCEg7gNwFVBFuAQvMnS7TctPlf2LE/view
Une fois connecté au vpn on peut vérifier l’ajout de l’interface tun0 ainsi que l’adresse
obtenue.
➔ ip a s
ETAPE 1
Dans cette étape nous allons énumérer toutes les bases de données du serveur distant
en utilisant des injections du type UNION SELECT schema_name FROM
information_schema.schemata mais par l’intermédiaire de la commande de sqlmap.
➔ sqlmap -u http://testphp.vulnweb.com/artists.php?artist=1 -dbs
Constat : On voit deux bases de données affichées que sont :
-accuart
-information_schema
Dans la suite nous exploiterons des vulnérabilités sur la BDD « accuart »
ETAPE 2
Dans cette étape nous allons indiquer à sqlmap de cibler la base de données nommée
acuart et d’afficher toutes les tables qui sont là- dedans.
Constat : 8 tables s’affiches .
ETAPE 3
La ligne de commande ci-dessous nous permettra d’énumérer toutes les colonnes
contenues dans les différentes tables précédemment vues.
Constat : Parmis les 8 tables nous remarquons l’existence d’une table appelée « users»
cette table contient plusieurs colonnes mais nous allons nous intéresser à 2 colonnes
que sont : « uname » et « pass » car logiquement c’est colonne peuvent des accès
utilisateurs comme l’indique le nom de la table.
ETAPE 4
Dans cette partie nous allons dumper et extraire les informations contenues dans la
colonne « uname ».
Explication de quelques options de la commande :
-T users Cible la table nommée users
-C uname Spécifie que tu veux extraire seulement la colonne uname
-- dump Lance l’extraction réelle des données de cette colonne
Constat : La seul information trouvée c’est « test » , probablement un nom d’utilisateur
que nous allons essayer à la dernière étape de notre pentesting .
ETAPE 5
Comme fait précédemment pour la colonne « uname » , nous allons extraire les données
de la colonne « pass ».
Constat : L’information contenu est encore « test »
ETAPE 6
Dans les 2 dernières étapes précédentes nous avons obtenu des accès tel que le nom
d’utilisateur : test et le mot de passe : test. Donc maintenant nous pouvons accéder au
formulaire pour essayer l’accès.
Pour le faire on accède à http://testphp.vulnweb.com/login.php.
NB : Cette page web n’est accessible que via le vpn indiqué en haut de ce document.
C’est fait nous y avons accès.
CONCLUSION
Au terme de ce test d'intrusion, une vulnérabilité de type injection SQL (SQLi) a été
identifiée et exploitée avec succès sur le paramètre artist de l'URL
http://testphp.vulnweb.com/artists.php.
Grâce à l'outil sqlmap, il a été possible d’énumérer les bases de données disponibles,
puis d’extraire des données sensibles depuis la table users de la base acuart.
Parmi les données récupérées figuraient un nom d’utilisateur et un mot de passe
valides, qui ont ensuite permis d’obtenir un accès non autorisé à la zone de connexion
du site.
Cette démonstration met en évidence les risques importants liés à une absence de
filtrage des entrées utilisateur et souligne l’importance :
• de l’écriture de requêtes SQL sécurisées (requêtes préparées),
• de la validation côté serveur,
• et de la mise en place de contrôles d’accès robustes.
Il est donc essentiel que de telles vulnérabilités soient corrigées rapidement dans un
environnement réel pour éviter tout accès non autorisé ou fuite de données