Institut Supérieur d’Informatique SQL Injection réalisé par: AYARI Maher Chalwati haithem Hamdoun Emir HAFSI RAMZI HAMMAMI OMAR 2012/2013
SOMMAIRE Qu’est ce qu‘un SQL injection? Les menaces. Technique d’exploitation. Contre-mesure. Démonstration.
Qu’est ce qu‘un SQL injection? Insertion ou "modification" d'une requête SQL via l'entrée des données en provenance d’un client d’une application . Consiste à placer des instructions SQL dans le champ de saisie de l'utilisateur. =>Principalement l’entrée d'utilisateur est utilisé dans la construction d'une requête SQL afin de contrôler une base de données.
Sources d’injection Injection via les inputs utilisateurs. Chaine de caractères malicieuse dans les formes web. Injection via les cookies. Modification des champs des cookies pour contenir du code malicieux. Injection via les variables des serveurs. Les entêtes sont manipulés pour contenir du code malicieux. En-têtes HTTP sont des informations de commande transmis de clients Web aux serveurs Web sur des requêtes HTTP et des serveurs Web pour les clients Web sur les réponses HTTP. Chaque en-tête consiste normalement en une seule ligne de texte ASCII avec un nom et une valeur.
But Extraction des informations. Ajout ou modification des informations. Effectuer des dénis de service. Contourner l'authentification. Exécution des commandes à distance.
Les menaces(1/2) Exploit réussi par injection SQL Lecture des données sensibles de la base de données. Modification des données de bases de données (INSERT / UPDATE / DROP). Exécution des opérations d'administration sur la base de données (l'arrêt du SGBD).
Les menaces(2/2) Attaques par injection SQL Permettre à des attaquants d’avoir une identité frauduleuse . Permettre la divulgation complète de toutes les données sur le système. Entraîner des problèmes tels que la répudiation des transactions annuler. Détruire les données ou les rendre autrement indisponible. Devenir administrateur de la serveur de base de données. Dans certains cas, les commandes d'émission visent le système d'exploitation.
Technique d’exploitation Exploitation par technique de l’union. Exploitation par technique booléenne(Tautologies). Exploitation par technique basée erreur. Piggybacked Queries. Etc…
Technique d’exploitation Exemple(1/3) Union: =>Les noms de colonnes utilisées dans le premier SELECT seront utilisées comme nom de champs pour les résultats retournés. Select login,pass from admin where login='' UNION SELECT login,pass from admin/*' and pass='$pass‘
Technique d’exploitation Exemple(2/3) Piggybacked Queries Requête falsifié a exécuter par la base de données. =>Dépend de la connaissance de la structure base de données (exemple nom de la table). SELECT prodinfo FROM prodtable WHERE prodname= ‘; DROP TABLE prodinfo;-- ‘ Input string
Technique d’exploitation Exemple(3/3) Tautologies Création d’une requête qui est évalué à 1. Hypothèse toujours vraie. SELECT prodinfo FROM prodtable WHERE login= ‘user‘ or 1=1 –– ‘ AND pass=‘vide’ Input string
Autres injection possible En utilisant des injections SQL, les attaquants peuvent: Ajouter de nouvelles données à la base de données Modifier les données actuellement dans la base de données en exécutant un UPDATE SQL injecté.
Contre-mesure (1/2) Validation d'entrée(input). Limité la longueur de l’entrée. Vérifier la syntaxe de l'entrée de la validité(dates/@ email/etc…). Éviter les messages d'erreur détaillés.
Contre-mesure (2/2) Limiter les autorisations de base de données et séparer les utilisateurs. Détection des mots indésirables dans les requêtes comme insert update …. Utiliser les fonctions prévues à protéger les chaînes. mysql_real_escape_string()