Qu'est-ce que le Social Engineering ?
Les cyberattaques ne consistent pas seulement en l'attaque de systèmes informatiques mais peuvent aussi venir d'escroqueries humaines ! C'est le social engineering.
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 !
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.
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.
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 :
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.
L'attaque par injection SQL est dangereuse car elle peut engendrer des problèmes majeurs:
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.
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.
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.
Il existe plusieurs types d’injections SQL, dont les principales sont :
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.
Plusieurs cyberattaques utilisent le principe de l’injection SQL. Par exemple :
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.
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.
Quelques bonnes pratiques vous aideront à vous protéger des attaques SQL :
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.
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.
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.