Injection SQL : définition, fonctionnement et protection

Julien Fournari
Par 
Julien Fournari
SEO & Growth Manager
Dernière mise à jour le 
4
 
July
 
2024
Reconvertissez-vous dans la Cybersécurité et donnez un tournant à votre carrière !
Se former en Cybersécurité
Injection SQL : définition, fonctionnement et protection
Sommaire

Apparues pour la première fois en 1998, les injections SQL sont depuis devenues l’une des cyberattaques les redoutées. Aussi appelées failles SQLi, elles permettent aux hackers d’injecter du code malveillant à vos bases de données pour y accéder, les modifier, voire les détruire

Grâce à cet article, vous comprendrez mieux comment les attaques SQL fonctionnent, mais surtout, vous apprendrez à vous en protéger. Bonne lecture !

Reconvertissez-vous dans la Cybersécurité et donnez un tournant à votre carrière !
Se former en Cybersécurité
Formation CybersécuritéFormation Cybersécurité

Qu'est-ce qu'une attaque par injection SQL ?

Pour comprendre ce qu’est une injection SQL, il faut d’abord savoir que SQL est un langage de programmation informatique utilisé pour gérer des bases de données relationnelles. Quand vous remplissez un formulaire sur un site Internet, dans la majorité des cas, les informations que vous indiquez sont ensuite envoyées vers une base de données grâce à du code SQL. 

Mais souvent, les données sont transmises sans être filtrées ou en ne l’étant pas suffisamment. Cela laisse le champ libre aux hackers, qui peuvent alors soumettre une commande SQL malveillante au lieu des informations normalement attendues : c’est ce qu’on appelle une attaque par injection SQL. Si l’attaque réussit, les attaquants peuvent consulter, voler, modifier, voire même supprimer les informations contenues dans la base de données attaquée, ce qui peut avoir de lourdes répercussions pour les entreprises.

À quelle famille de cyberattaques appartient l'injection SQL ?

L'injection SQL fait partie des attaques par injection, une catégorie de cyberattaques qui cible les applications web. Pour fonctionner, l’application web communique avec une base de données. Les attaques SQL exploitent les failles de sécurité dans les interactions entre l'application et sa base de données pour exécuter des commandes non autorisées.

Quelles sont les cibles d'une attaque SQL ?

Les injections SQL visent principalement les bases de données, car le langage SQL est conçu pour les manipuler. De nombreux types de structures utilisent ces bases pour stocker des informations sensibles, et deviennent ainsi vulnérables à  ce type de cyberattaque. Voici les cibles les plus courantes :

  • Les sites web, principalement les sites de e-commerce, qui stockent des informations personnelles et financières.
  • Les applications ou sites avec des fonctionnalités de connexion et d’inscription, qui enregistrent des adresses mail et des mots de passe.
  • Les entreprises et organisations qui stockent des données client, mais également tout un ensemble d’informations, parfois confidentielles, en lien avec leurs activités et expertises.
  • Les institutions financières constituent également une cible de choix en raison de la valeur des informations contenues dans leurs bases de données.

Bien que les particuliers ne soient pas directement visés par les attaques SQL, ils peuvent être affectés indirectement lorsque les bases de données contenant leurs informations personnelles sont piratées.

Pourquoi l'injection SQL est-elle dangereuse ?

L'attaque par injection SQL est dangereuse car elle peut engendrer des problèmes majeurs:

  • Vol de données sensibles, telles que des informations personnelles et financières. Les cybercriminels peuvent ensuite les revendre ou les utiliser à des fins malveillantes.
  • Prise de contrôle de comptes grâce au vol des identifiants, permettant aux pirates d’usurper l’identité de tiers en ligne. S’ils parviennent à accéder à des comptes administrateurs, ils peuvent même venir perturber le fonctionnement d’applications ou de sites web, ce qui peut mener à d’importantes répercussions financières et nuire à la réputation des organisations victimes.
  • Corruption des données, celles-ci pouvant être modifiées voire supprimées.

Prenons un exemple concret pour que vous preniez bien conscience du danger des injections SQL. Un hacker accède à la base de données comprenant les informations d’identification du journal local. Il parvient à modifier les identifiants du compte du rédacteur en chef et ceux des comptes du support technique. Il se connecte au compte du rédacteur et en profite pour publier des fake news, ce qui nuit à la réputation du journal ; de leur côté, ni le rédacteur en chef ni le support technique ne peuvent régler le problème, puisqu’ils n’ont plus accès à leur compte ! De plus, le rédacteur en chef ne pouvant plus se connecter, il lui devient impossible de valider la publication de nouveaux articles, engendrant le mécontentement des clients et des pertes financières supplémentaires.

Comment fonctionne une injection SQL ?

Une injection SQL exploite les failles dans les requêtes SQL utilisées par une application web pour interagir avec une base de données. L'attaquant injecte du code SQL malveillant dans un champ de saisie (comme un formulaire ou une URL) qui n'est pas correctement filtré. Ce code est ensuite traité par la base de données comme une commande légitime, permettant ainsi au hacker de lire, modifier, ou supprimer des informations sensibles, voire même de prendre le contrôle du système dans les cas les plus extrêmes.

Cas concret d'une attaque par injection SQL

Prenons un nouveau cas concret pour que vous visualisiez bien le fonctionnement d’une attaque par injection SQL. Imaginez un formulaire de connexion à un site Internet. Vous devez rentrer votre identifiant et votre mot de passe, par exemple :

  • Identifiant : Julien
  • Mot de passe : 123456

Ces informations de connexion sont envoyées à la base de données via une requête SQL comme celle-ci :

  • SELECT * FROM utilisateurs WHERE nom = 'Julien' AND mot_de_passe = '123456';

Cette commande permet de vérifier que les données saisies correspondent bien à un compte (si elles sont vraies), et si tel est le cas, les informations associées à ce compte vous seront « retournées » ; en d’autres termes, vous pourrez y accéder.

Cependant, un hacker peut entrer une commande SQL malveillante au lieu des identifiants classiques : 

  • Identifiant : ' OR '1' = '1'; --
  • Mot de passe : (vide)

Cela a pour effet de transformer la requête envoyée à la base de données, qui devient alors :

  • SELECT * FROM utilisateurs WHERE nom = '' OR '1' = '1' -- AND mot_de_passe = '';

Dans cette requête, l'expression '1' = '1' est toujours vraie, rendant l'authentification efficace pour n'importe quelle entrée. Le symbole -- transforme le reste de la ligne en commentaire, donc ignore la vérification du mot de passe. En conséquence, l’application accède à la base de données sans vérifier le mot de passe et peut fournir au hacker un accès complet.

Résultat : au lieu de renvoyer une seule ligne d'utilisateur, la base de données peut exposer toutes les lignes contenant des informations sensibles, ce qui permet au hacker d’accéder à tous les identifiants de connexion contenus dans la base.

Ce type d'attaque peut paraître simpliste, il a pourtant été utilisé de nombreuses fois pour accéder à des données sensibles ou à des systèmes complets. En 2012, LinkedIn a ainsi été victime d'une attaque qui a exposé des millions de mots de passe via une faille SQL similaire.

Quels sont les différents types d'injections SQL ?

Il existe plusieurs types d’injections SQL, dont les principales sont :

  • L’injection SQL classique, lors de laquelle l’attaquant injecte du code SQL malveillant grâce à un champ de saisie, ce qui lui permet de contourner les contrôles d'authentification pour extraire des données sensibles.
  • La Blind SQL Injection, aussi appelée injection SQL inférentielle. Le site attaqué ne montre pas directement le résultat des requêtes SQL. L’attaquant envoie des requêtes pour observer les réactions du serveur, comme des messages d'erreur, afin de déduire des informations. Le hacker procède alors caractère par caractère pour obtenir les informations qu’il cherche à extraire, et envoie une multitude de requêtes qui renvoient des réponses « vrai » ou « faux » selon la validité des caractères testés
  • L’injection SQL basée sur l'URL, lors de laquelle les attaquants injectent du code malveillant dans une URL qui interagit directement avec la base de données ciblée, compromettant ainsi le système.
  • La union-based SQL Injection, qui utilise la commande UNION pour combiner plusieurs requêtes et récupérer des informations provenant d'autres bases que celles ciblées par la requête initiale. Par exemple, au lieu de renvoyer uniquement les informations de l'utilisateur connecté, une injection union-based peut en plus permettre d’afficher les données sensibles de plusieurs utilisateurs.

Qui se cache derrière les attaques par injections SQL ?

Les hackers qui utilisent l'attaque SQL

Les attaques par injection SQL sont utilisées par les cybercriminels qui cherchent à voler des données sensibles. Aussi bien des groupes de pirates informatiques que des hackers isolés peuvent exploiter les failles SQL pour accéder aux informations contenues dans les bases de données.

Dans les années 2000, Albert Gonzalez a ainsi volé des millions de numéros de cartes de crédit grâce à des injections SQL. Les hackers d’Anonymous usent également régulièrement de ce type de cyberattaque pour exposer les informations confidentielles de plusieurs entreprises et organisations.

Les exemples les plus marquants d'injections SQL

Plusieurs cyberattaques utilisent le principe de l’injection SQL. Par exemple :

  • En 2008 a lieu l’une des plus grandes attaques par injection SQL de l’histoire. Des hackers ont réussi à voler plus de 130 millions de numéros de cartes de crédit en exploitant une vulnérabilité dans les bases de données de Heartland Payment Systems, une société proposant des services de paiement.
  • En 2011, le groupe de hackers LulzSec utilise une injection SQL pour accéder à la base de données de Sony Pictures, exposant des informations personnelles de plus de 1 million d’utilisateurs.
  • En 2015, une attaque SQL compromet les données personnelles de plus de 150 000 clients du fournisseur de télécoms britannique TalkTalk.

Comment les injections SQL sont utilisées par les experts en cybersécurité ?

Les experts en cybersécurité, et notamment les pentesters, peuvent effectuer des injections SQL lors de leurs tests d’intrusion. Leur but : identifier les failles SQL et les corriger avant que des hackers malveillants ne puissent les exploiter. Pour aider les pentesters dans leur travail, Jedha vous a concocté un cheat sheets SQL qui vous aidera à identifier plus rapidement les vulnérabilités de vos bases de données grâce à des raccourcis et à des modèles de requêtes.

Comment se protéger des cyberattaques par injection SQL ?

Comment identifier une injection SQL ?

Plusieurs signaux d'alerte peuvent vous mettre la puce à l’oreille et évoquer une injection SQL. Prêtez attention aux erreurs inhabituelles qui s’affichent sur une page web, ou au comportement anormal de votre site qui pourrait se mettre à afficher des données sans raison. Un temps de réponse anormalement long ou des résultats incohérents suite à des requêtes peuvent aussi être des signaux d’alarme.

Les outils de scan de vulnérabilité peuvent aussi vous aider à détecter les failles SQL ; ils vous permettent d’automatiser les tests de sécurité pour identifier les points faibles de votre site ou application web.

Comment se protéger d'une attaque SQL ?

Quelques bonnes pratiques vous aideront à vous protéger des attaques SQL :

  • Mettez régulièrement à jour votre base de données pour pouvoir corriger les failles les plus connues.
  • Ajoutez un système de validation et de filtration pour contrôler les entrées utilisateurs et ainsi limiter les injections de code malveillant.
  • Utilisez un pare-feu, qui vous permettra de filtrer les tentatives d’injections SQL mais aussi de nombreuses autres attaques.
  • Utilisez un scanner de vulnérabilités pour identifier les problèmes de votre site ou de votre application web avant qu’ils ne soient exploités à des fins malveillantes.
  • Intégrez dès le stade de développement de votre site des objectifs de cybersécurité à votre cahier des charges.
  • Faites appel à des équipes de cybersécurité, qui pourront procéder à des audits réguliers pour garantir l’intégrité de vos systèmes.
  • Sensibilisez vos développeurs, vos équipes IT et toutes les personnes qui travaillent avec des bases de données aux risques des attaques SQL.

Conclusion : comment se former au pentesting ?

En identifiant les failles SQL (et de nombreuses autres) avant qu’elles ne soient exploitées par les hackers, les pentesters jouent un rôle essentiel dans la protection des organisations face aux cybermenaces. Si vous souhaitez vous aussi apprendre à identifier les vulnérabilités pour vous reconvertir dans la cybersécurité, Jedha vous propose une formation intensive pour devenir pentester, éligible au CPF et à l’issue de laquelle vous obtiendrez un diplôme de niveau bac+4 reconnu par l’État. En la suivant, vous apprendrez à réaliser un grand nombre de tests d’intrusion, mais également à sécuriser une infrastructure informatique.

Questions fréquentes à propos des injections SQL

Qu'est-ce que SQL ?

SQL (pour Structured Query Language) est un langage de programmation utilisé pour interagir avec des bases de données relationnelles. Il permet notamment de modifier ou de supprimer les données contenues dans une base de données.

Quelle est la différence entre une injection SQL et une injection PHP ?

L'injection SQL cible les bases de données en insérant du code malveillant dans une requête SQL, tandis que l'injection PHP exploite les failles du code PHP d'un site pour exécuter des commandes malveillantes directement sur son serveur.

Soirée Portes Ouvertes Jedha BootcampSoirée Portes Ouvertes Jedha Bootcamp
Julien Fournari
Julien Fournari
SEO & Growth Manager
Julien occupe le poste de SEO & Growth Manager chez Jedha depuis Mexico. Sa mission est de créer et d'orchestrer du contenu pour la communauté Jedha, de simplifier les processus et de dénicher de nouvelles opportunités, tant pour Jedha que pour ses étudiants, en exploitant sa maîtrise du digital.