Blog – Injection SQL : savoir protéger son site ou son application

Injection SQL : savoir protéger son site ou son application

Protéger son système de base de données est sans doute l’un des plus gros défis d’une entreprise. L’une des meilleures solutions pour y parvenir est crypter ses formulaires. Lorsque les sites ne disposent pas d’excellentes mesures de protection des données de leurs clients, les informations personnelles sont vulnérables. Dans ce sens, des données peuvent être piratées, voire « victimes » d’une injection SQL.

Comprendre le mode de fonctionnement de cette attaque ainsi que ses dangers vous permettra sans doute de savoir comment la prévenir, et donc, protéger votre système de base de données. Renforcez la protection de votre site ou de vos applications contre l’injection SQL.

  1. Qu’est-ce qu’une injection SQL ?
  2. Fonctionnement d’une injection SQL
  3. Les différents types d’attaques par injection SQL
    1. Injection SQL basée sur l’Union
    2. Injection SQL aveugle
    3. Injection SQL basée sur les erreurs
  4. Quels sont les dangers d’une injection SQL ?
  5. Pourquoi utiliser un logiciel contre les injections SQL ?
    1. Savoir si son site est faillible
    2. Réparer les failles
    3. Protéger des injections SQL

 

Qu’est-ce qu’une injection SQL ?

Le Structured Query Language ou SQL est un langage informatique qui permet à un utilisateur d’interagir avec des bases de données. C’est le cas des applications web qui, pour fonctionner, utilisent un système de base de données pour traiter des informations. Ces informations se transforment par la suite en contenu dynamique pour les internautes. L’injection SQL, également appelée SQLI, n’est rien d’autre qu’une attaque utilisant des déclarations SQL malveillantes pour compromettre une base de données.

Ce faisant, elle accède à des informations considérées comme confidentielles à l’instar les données sensibles d’une entreprise, les détails de clients privés, les secrets commerciaux, etc. Naturellement, ces informations regroupent un nombre important d’éléments. Imaginez donc l’impact que pourrait avoir l’injection SQL sur une entreprise. Une vulnérabilité d’injection SQL peut entraîner la suppression de tables de données entières, la perte de confiance des clients, surtout lorsque leurs informations personnelles se trouvent menacées.

Dans certains cas, l’attaquant peut obtenir de droits administratifs sur la base de données d’une entreprise, ce qui pourrait être fatal pour cette dernière. Bien que le vecteur d’attaque SQL puisse atteindre n’importe quelle base de données SQL, les sites et applications web sont les plus fréquemment ciblés.

 

Fonctionnement d’une injection SQL

En général, les injections SQL sont effectuées via une entrée d’application ou une page web. Ces formules d’attaque sont souvent saisies dans les paramètres d’URL, les champs de recherche ou encore dans les champs de formulaire. Pour qu’une attaque par SQL « soit effective », les hackers ou pirates recherchent d’abord les vulnérabilités dans une application ou sur une page web. Une fois la cible localisée, ils créent des charges malveillantes devant leur servir à exécuter des commandes ou programmes malveillants.

Dans certains cas, ils se servent uniquement d’un programme automatisé qui se chargera d’exécuter une attaque par SQL à leur place. Dans ce cas, il leur faudra simplement fournir l’adresse web du site cible afin d’avoir accès aux données confidentielles de la victime.

 

Les différents types d’attaques par injection SQL

Considérées comme de sérieuses menaces pour la sécurité des sites et applications web, les injections SQL se présentent sous différents types.

Injection SQL basée sur l’Union

C’est la technique d’attaque la plus utilisée par les pirates ou hackers. Les attaquants s’en servent pour extraire des données de la base de données. Plus précisément, ils utilisent l’opérateur SQL UNION pour faire exécuter deux instructions SELECT en une seule commande avant de le renvoyer en guise de réponse.

Injection SQL aveugle

Il s’agit là d’une des techniques les plus sophistiquées et les plus difficiles à réaliser. Elle est souvent utilisée dans le cas où des messages d’erreur génériques sont directement reçus de la cible. Dans une technique SQL aveugle, les attaquants interrogent votre système de base de données par des quiz vrais ou faux. Cela leur permet par la suite de récupérer une réponse du serveur afin de mieux l’attaquer.

Injection SQL basée sur les erreurs

Comme l’indique son nom, cette technique est utilisée en présence d’erreurs de base de données d’une application ou d’un site web. Les attaquants se servent donc de certains messages d’erreurs pour accéder à des informations classées secrètes dans la base de données. Cette technique peut par ailleurs être utilisée pour indiquer si une application web ou un site web est vulnérable. Une démarche qui permet aux mauvais acteurs de restructurer leurs requêtes malveillantes.

Outre ces techniques d’injection SQL, il en existe d’autres types. Il s’agit notamment de l’injection SQL basée sur les booléens et celle basée sur le temps.

 

Quels sont les dangers d’une injection SQL ?

Comme mentionné un peu plus haut, une injection SQL consiste à entrer une formule malveillante dans le système de base de données d’un particulier ou d’une entreprise. Si entre-temps, aucune mesure de sécurité n’a été prise, cette formule sera exécutée avec tous les dangers qu’elle comporte.

Avec une telle faille, l’attaquant peut facilement ajouter, lire ou modifier à sa guise les données contenues dans ladite base de données. Cela pourrait également lui permettre de lire le code source de milliers de fichiers qui se trouvent sur le serveur piraté. Comme autres dangers d’une injection SQL, l’attaquant peut écrire, voire éditer des fichiers dans la base de données compromise.

Prenons l’exemple ci-dessous pour mieux illustrer tous ces dangers.

UId= getRequestString (« UXId ») ;

valSQL = “SELECT * FROM Utilisateur WHERE UXId = ” + UId;

Comme vous pouvez le constater, ce code est généralement utilisé par les attaquants pour créer une déclaration SQL. Ceci est fait dans l’unique but de sélectionner un utilisateur qui correspond à un identifiant donné. Que se passera-t-il si l’utilisateur ajoute le code 206 OR 2=2 en tant qu’Utilisateur dans le formulaire ?

Dans un cas pareil, la déclaration se présentera sous la forme suivante :

SELECT * FROM Utilisateur WHERE UXId = 206 OR 2 = 2;

La conséquence à cela est que toutes les lignes sont désormais affichées alors que l’objectif initial était d’afficher uniquement une ligne (celle correspondant à l’identifiant utilisateur saisi). Cela est dû au fait que la condition OR est très souvent vraie, étant donné que 2=2. Le réel danger, c’est lorsque des mots de passe sont révélés en plus des noms d’utilisateurs.

 

Pourquoi utiliser un logiciel contre les injections SQL ?

Nombreuses sont les raisons qui pourraient vous amener à utiliser un logiciel pour être à l’abri des injections SQL. En voici quelques-unes.

Savoir si son site est faillible

L’une des missions fondamentales d’un logiciel anti-injection SQL est sans doute celle de renforcer la sécurité de votre site. Ceci passe logiquement par l’analyse dudit site afin de déceler ses éventuelles failles. Pour savoir si votre site est faillible ou non, la majorité de ces logiciels proposent des tests d’instruction. Le principe est simple : votre serveur est considéré comme une boite. On recense en tout 3 différents types de tests d’instruction.

Le test en black box

Pour ce test, il est quasiment impossible de voir ce que contient la boite. Agissant comme un hacker, le logiciel tente d’infiltrer votre service sans avoir une idée du code qui se cache derrière.

Le test en grey box

Encore appelé test en boite grise, ce test permet au logiciel d’avoir accès au contenu de la boite. Dans ce sens, il peut accéder au site, mais avec un nombre limité d’informations.

Le test en white box

Avec le test en boite blanche, il est possible de voir tout ce qui se trouve à l’intérieur de la boite. Le testeur ou le logiciel peut alors accéder à toutes les données de votre site, dont l’architecture des répertoires, le code source, FTP, etc.).

Réparer les failles

Outre l’identification des failles, un tel logiciel sert également à corriger ces vulnérabilités repérées. Il s’agit certainement d’un des moyens sûrs pour être à l’abri des injections SQL. Pour ce faire, différentes étapes sont à suivre. Ainsi, dans un premier temps, le logiciel se chargera de localiser le code vulnérable. Ceci peut se faire en lançant manuellement un outil d’attaque par injection SQL automatisée comme me jSQL ou le Havij.

Une fois l’emplacement de la vulnérabilité trouvé, l’étape suivante consiste à supprimer les éventuelles portes ou contenus affectés. Autrement dit, le logiciel se charge de supprimer les mauvaises données de votre système afin de le restaurer dans un état optimal. Après cela, il faudra ensuite mettre à jour vos données. Au besoin, le logiciel vous proposera de changer tous vos secrets d’applications et mots de passe dès que les failles sont corrigées. Pour finir, le logiciel se charge de configurer un WAF. Il s’agit en réalité d’un pare-feu d’application Web pour filtrer, voire entraver les demandes malveillantes sur un site internet.

 

Se protéger des injections SQL

Comme autre utilité d’un logiciel anti-injection SQL, on retient la protection de votre site des injections SQL. Pour prévenir votre site de ces attaques, les logiciels utilisent différentes méthodes. Il est d’ailleurs normal d’utiliser plusieurs stratégies pour renforcer la sécurité du site. Voici quelques-unes des techniques les plus courantes.

Utilisation de déclaration préparée

Cette technique consiste à assainir les entrées de votre base de données. Le but est de permettre à cette dernière de s’assurer de la distribution entre le code à exécuter et les données qui sont entrées.

Utilisation de procédure stockée

Encore une technique capable de limiter les risques associés à l’injection SQL. Par ailleurs, cette méthode permet de vérifier le type de paramètre d’entrée, surtout dans le cas où les requêtes statiques sont insuffisantes.

À ces techniques s’ajoutent d’autres comme l’Espace All User Supplied Input et celle consistant à appliquer le principe du moindre privilège.

Vous en savez désormais un peu plus sur les injections SQL. En somme, on retient qu’elles constituent de véritables menaces pour les informations contenues dans une base de données, notamment les plus sensibles. Il importe donc de mettre en place des stratégies pouvant aider à prévenir de telles attaques.

V6Protect vous propose une solution clé en main pour prévenir des attaques et protéger votre site très simplement. Contactez-nous !uyèç^mù