0% ont trouvé ce document utile (0 vote)
14 vues10 pages

Injection SQL

L'injection SQL est une méthode de piratage exploitant les failles des applications web pour manipuler les bases de données, permettant l'exécution de commandes SQL non autorisées. Les conséquences incluent le vol de données sensibles, la modification ou la suppression d'informations, et la prise de contrôle du système. La prévention repose sur une sécurisation rigoureuse du code et l'utilisation d'outils de détection comme SQLMap et OWASP ZAP.

Transféré par

Mogiwara boy
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
14 vues10 pages

Injection SQL

L'injection SQL est une méthode de piratage exploitant les failles des applications web pour manipuler les bases de données, permettant l'exécution de commandes SQL non autorisées. Les conséquences incluent le vol de données sensibles, la modification ou la suppression d'informations, et la prise de contrôle du système. La prévention repose sur une sécurisation rigoureuse du code et l'utilisation d'outils de détection comme SQLMap et OWASP ZAP.

Transféré par

Mogiwara boy
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Université Sultan Moulay Slimane ‫جامعة السلطان موالي سليمان‬

Faculté Polydisciplinaire
Béni Mellal
‫الكلية المتعددة‬
‫التخصصات‬
‫بني مالل‬

Licence d’Excellence :
Data Science et Sécurité des Systèmes d’Information

Semestre : 5
Module : Réseau Informatique

Compte rendu
Injection SQL

Elaboré par : Encadré par :


Aarab Walid M. Darif Anouar
Jyou Mouhsine

1
I. Introduction :

 L'injection SQL est un procédé de piratage numérique qui tire parti des failles présentes dans
les applications web afin de manipuler les bases de données. Elle offre à un intrus la
possibilité d'exécuter des instructions SQL non autorisées en intégrant du code nuisible dans
les zones de saisie ou les requêtes. Cela peut avoir de graves répercussions, comme la fuite
d'informations sensibles, la modification ou l'élimination de données, et potentiellement
même l'appropriation du système.

II. Objectif :

 Assurer la protection des données sensibles


o Éviter l'accès illicite à des informations délicates comme les mots de
passe, les données privées, les renseignements financiers, et autres.

 Assurer l'intégrité des données.

o Éviter tout changement, suppression ou ajout non autorisé


d'informations dans la base de données.

 Éviter les accès non autorisés

o Empêcher les tentatives de contournement des méthodes


d'authentification (comme l'utilisation d'injections SQL pour accéder
sans mot de passe valide).

 Consolider la confiance des utilisateurs

o Prouver aux utilisateurs que leurs informations sont gérées en toute


sécurité.

 Diminuer les dépenses associées aux incidents de sécurité

o Éviter les frais liés aux violations de données, aux interruptions de


service et aux réparations après un incident.

III. L’injection SQL

 Méthode d'attaque utilisant les failles de sécurité des applications web pour altérer les bases
de données.
 Permet l'exécution de commandes SQL non autorisées

2
 Impact :

 Vol de données sensibles.


 Modification ou suppression de données.
 Prise de contrôle du système.

 Conséquences de l'injection SQL

 Accès interdit :

 Évitement des procédures d'authentification.

 Données volées :

 Extraction d'informations confidentielles.

 Changement de données :

 Modification ou élimination de données cruciales.

 Formation :

 Mise en œuvre de commandes système.

 Outils de détection et de prévention

 OWASP ZAP :

 Instrument d'analyse des vulnérabilités.

 SQLMap :

 Instrument automatisé pour identifier et exploiter les


injections SQL.

 Acunetix :

 Analyseur de sécurité pour applications web.

3
IV. Présentation

L'injection SQL est une faille critique permettant à un pirate de réaliser des requêtes
malintentionnées sur une base de données en exploitant des entrées utilisateur non
protégées. Elle peut provoquer l'accès, la modification ou la suppression de données
sensibles, voire un contrôle total du serveur. Parmi les techniques les plus fréquemment
utilisées figurent l'injection par union (UNION), l'injection par erreur et l'injection aveugle.
Les assaillants se servent souvent d'outils comme SQLMAP ou SQLNinja pour automatiser
leur exploitation. La prévention de cette vulnérabilité dépend d'une sécurisation rigoureuse
du code et d'une surveillance constante.

V. Fonctionnement :
L'injection SQL est une méthode d'attaque qui profite des failles d'une application web pour
altérer les requêtes SQL adressées à la base de données. Voici une description exhaustive de
son mécanisme :

 Principe de base

 But de l'assaillant :

 Insérer du code SQL malveillant dans une requête


légitime.
 Déjouer les systèmes de protection afin d'accéder,
altérer ou éliminer des informations.

 Porte d'accès :

 Les champs d'entrée utilisateur (formulaires pour se


connecter, barres de recherche, etc.).
 Les paramètres d'URL (par exemple : ?id=1).

4
 Fonctionnement étape par étape

 Etape1 : Détection d'une faille de sécurité

 L'attaquant examine les entrées de l'utilisateur afin


d'identifier des vulnérabilités.
 Exemple : Insérer une apostrophe (') dans un champ de
formulaire afin de déclencher une erreur SQL.

 Etape2 : Insertion de code SQL

 L'agresseur intègre un code SQL malveillant dans une


saisie utilisateur.
 Champ de connexion : nom = walid' –
 Le commentaire -- désactive la vérification du mot de
passe.
 Requête SQL générée :

 Etape 3 : Mise en œuvre de la demande malintentionnée

 Si l'application ne vérifie pas correctement les données


saisies, la requête injectée sera exécutée par la base de
données.
 Injection : ' OU '1'='1 :

 SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '' OR '1'='1';

 Etape4 : Mise en œuvre des résultats

 L'assaillant est capable de :

 Accéder à des informations sensibles.


 Ajuster ou éliminer des informations.
 Effectuer certaines commandes systèmes (dans certains
scénarios).
VI. Mise en œuvre

Dans cet élément, nous présenterons la méthode que nous avons utilisée pour
construire un environnement de test d'attaque par injection SQL sur Ubuntu. Nous avons
traversé par différentes procédures, de l'installation des instruments à l'exploitation du
dysfonctionnement, et après cela, nous avons mise en place des mesures de sécurité.

5
 Configuration de l'environnement

 L’installation des outils :

 Sqlmap pour identifier les vulnérabilités SQLi.

 Apache utilisé en tant que serveur web

 MySQL employé pour la gestion de la base de


données

 PHP mis en œuvre pour l'exécution de code


dynamique

6
 Élaborer l'architecture du projet

 Constituez un dossier pour votre projet :

 Accorder les autorisations adéquates :

 Générer les fichiers en HTML et PHP.

 Créer un fichier HTML :

 Générez un fichier PHP :

 Veuillez créer un fichier nommé formulaire.php dans le


même dossier :

 Élaborer une base de données et une table.

 Dans l'interface en ligne de commande MySQL, lancez :

7
 Générer un fichier PHP pour le traitement :

 Élaborez un fichier nommé traitement.php destiné à


gérer les informations du formulaire.

 Utilisation de la vulnérabilité par injection SQL

 Après avoir mis en place notre site, nous l'avons vérifié


en accédant
 http://localhost/mon_projet/formulaire.php

1. Exercice 1 : Utilisation de l'UNION dans une injection SQL pour dérober des informations.

 Enoncé :

o Une page de recherche d'utilisateurs est disponible sur le site web, à


l'adresse URL suivante : http://localhost/search.php?user_id=2

8
o La requête SQL employée est :

o Un pirate suggère d'exploiter une injection SQL afin de dérober tous les
identifiants et mots de passe enregistrés dans la base de données.
o Veuillez changer l'URL de cette manière :

http://localhost/search.php?user_id=2 UNION SELECT username, password FROM users;


 Élaboration

o SELECT username, email FROM users WHERE id = '2'


o UNION SELECT username, password FROM users;

o L'instruction UNION est exécutée par SQL, intégrant ainsi les


noms d'utilisateurs et leurs mots de passe au résultat présenté sur la
page.

 Solution de Sécurisation

o Pour se prémunir contre cette attaque, il est nécessaire de :

o Restreindre les résultats du SELECT afin d'éviter l'usage de UNION.

2. Exercice 2 : Injection SQL avec Boolean-Based Blind SQL Injection

 Enoncé :

o Un site internet possède une page dédiée à la visualisation des


informations d'un utilisateur en fonction de son identifiant, via une
URL du type : http://localhost/profile.php?id=3

o La requête SQL employée est :

o Malheureusement, l'application ne montre aucun message d'erreur,


ce qui rend impossible l'utilisation de UNION SELECT pour obtenir des
données directement.

9
 Solution concernant l'attaque :

o On commence par vérifier si la page présente des failles en


tentant :
http://localhost/profile.php?id=3 AND 1=1

o Si la page se charge correctement, cela signifie que la requête


SQL a été exécutée.

o Par la suite, on procède à tester une valeur incorrecte : Vous


avez été formé sur des données : :
http://localhost/profile.php?id=3 AND 1=2

o Si la page n'est plus visible, cela signifie que la requête est


sous contrôle.

 Solution de Sécurisation :

o Pour se prémunir contre cette attaque, il est nécessaire de :

o Restreindre les réponses de la base de données (éviter d'afficher des messages


d'erreur détaillés).

VII. Conclusion

L'injection SQL demeure l'une des failles les plus graves et couramment utilisées dans les
applications web. Elle constitue une menace sérieuse pour la protection des données et l'intégrité
des systèmes. Cela peut donner à un assaillant la possibilité d'accéder, de modifier ou d'effacer des
informations conservées dans une base de données.

10

Vous aimerez peut-être aussi