Injection SQL : un guide pour les utilisateurs de WordPress

Publié: 2021-05-26

Si vous êtes sérieux au sujet de la sécurité de votre site Web, alors il est temps d'en apprendre davantage sur les dangers des injections SQL et comment vous pouvez les combattre.

Le terme injection SQL (également appelée SQLi) fait référence à un type de technique de cyberattaque qui est un moyen courant pour les pirates de compromettre des sites Web de toutes sortes, y compris des sites utilisant WordPress comme système de gestion de contenu.

Dans ce guide, nous expliquerons en détail à quoi ressemble une attaque par injection SQL et les étapes exactes à suivre pour en éviter une. Nous allons jeter un coup d'oeil. Vous apprendrez tout sur le fonctionnement de ces attaques, pourquoi il est si important de se défendre et des exemples concrets de ces vulnérabilités. Plongeons-nous !

Dans ce guide

    Introduction : Comprendre SQL

    S tructured Q uery L angue, ou « SQL » (prononcé comme le mot « suite ») est un système de gestion de base de données relationnelle. Inventé en 1974, il s'agissait du premier moyen simple de stocker et de récupérer de nombreux types de données sur des systèmes informatiques.

    Depuis lors, le langage a explosé en popularité et est toujours utilisé dans de nombreux systèmes de gestion de contenu (CMS) comme WordPress aujourd'hui. Peu de temps après que le langage soit devenu populaire dans la communauté de la recherche scientifique, le problème de la désormais tristement célèbre injection SQL s'est posé.

    Dans des systèmes comme WordPress, de nombreuses opérations utilisent des requêtes SQL pour récupérer et stocker des données. Ces requêtes SQL sont écrites par des développeurs et ne sont pas conçues pour être malléables.

    Malheureusement, depuis la création de SQL, les attaques par injection SQL sont un problème persistant pour les systèmes qui utilisent ce type de base de données, comme la base de données WordPress. L'utilisation d'un plugin de sécurité WordPress de qualité peut certainement aider à atténuer le risque de subir une attaque ou une violation dévastatrice. Cependant, comme dirait GI Joe, « connaître est la moitié de la bataille » lorsqu'il s'agit de toute forme de cyberattaque.

    Qu'est-ce qu'une injection SQL (SQLi) ?

    En résumé, une injection SQL (SQLi) est une attaque qui permet à un pirate de profiter d'une requête SQL vulnérable pour exécuter sa propre requête. Les injections SQL se produisent lorsqu'un attaquant est capable d'exécuter son propre SQL sur un serveur.

    Vous remarquerez que les injections SQL sont souvent appelées « SQLI » ou « SQLi » dans les publications techniques. N'oubliez pas que ces attaques peuvent se produire sur n'importe quel système qui utilise SQL ou un dérivé de SQL pour gérer les données. Les injections WordPress SQL en particulier sont si bien étudiées et documentées en raison du volume considérable de sites qui s'exécutent sur la plate-forme WordPress.

    Jetons un coup d'œil à la dépense plus technique en quoi consistent ces attaques.

    Définition d'injection SQL

    Par définition, l'intention d'une injection SQL est toujours malveillante et vise généralement à atteindre un ou plusieurs de ces trois objectifs :

    1. Récupération de données non autorisée - Dans SQL, la commande SELECT est utilisée pour récupérer des données. Si un attaquant parvient à manipuler avec succès une requête basée sur SELECT, il pourra « vider » le contenu d'une base de données. C'est pourquoi il est essentiel de chiffrer toutes les bases de données avec des informations qui ne devraient pas être rendues publiques.
    2. Modification des données – Dans d'autres cas, l'objectif d'une injection SQL WordPress peut être de modifier les entrées dans les bases de données. Il s'agit généralement d'attribuer à un compte particulier ou à un ensemble d'autorisations de comptes qu'ils n'auraient pas normalement.
    3. Déni de service (DoS) – Une attaque DoS survient lorsqu'un utilisateur malveillant rend plus difficile l'accès des utilisateurs légitimes à votre site ou à vos services. Une commande courante dans SQL pour supprimer des données est simplement DELETE. Les attaquants suppriment souvent en masse le contenu des bases de données pour rendre les sites cibles inaccessibles ou inutilisables.

    Conseil rapide : sauvegardez votre site Web régulièrement !

    De nombreux développeurs chevronnés conservent des copies hors serveur de tout le SQL qu'ils ont écrit pour leurs sites WordPress. Sous la forme de fichiers .sql, ceux-ci peuvent être utilisés avec un plugin de sauvegarde WordPress pour garantir que même si un attaquant peut contrecarrer votre sécurité, vous pouvez récupérer en très peu de temps. Un plugin de sauvegarde WordPress comme BackupBuddy sauvegarde l'intégralité de votre base de données WordPress et tous les autres fichiers de votre installation WordPress.

    injection SQL

    Explication des types d'attaques par injection SQL

    Maintenant que nous avons exploré certains des dommages que les attaques basées sur SQL peuvent causer, il est temps d'explorer le côté plus technique des injections. Il existe quelques sous-ensembles importants de types d'injection que vous devez connaître.

    Injection SQL classique (SQLi)

    Le type d'injection le plus courant, la version classique, c'est lorsque l'attaquant connaît à l'avance le code SQL. C'est aussi le type d'injection le plus utilisé sur WordPress ; WordPress étant open source, le grand public a accès à tous ses composants, y compris ses requêtes SQL.

    Nous aborderons des exemples concrets un peu plus tard, mais avec cette forme d'injection, les attaquants manipulent souvent les requêtes pour « annuler » la première partie d'une. Ils peuvent ensuite insérer une requête personnalisée que le serveur exécutera comme si le développeur d'origine l'avait écrite.

    Injection SQL aveugle (SQLi)

    Contrairement à la version classique, les injections SQL aveugles se produisent lorsque l'attaquant n'a pas accès au code SQL et doit simplement faire une supposition éclairée. De plus, ce type nécessite beaucoup plus de compétences que le SQLi traditionnel, car les résultats d'une attaque réussie ne sont pas affichés pour l'attaquant.

    Cela étant dit, il existe de nombreux programmes disponibles qui aident les utilisateurs malveillants à récupérer automatiquement leurs résultats petit à petit.

    Injection SLQ composée (SQLi)

    Cette forme d'attaque se produit lorsqu'une attaque distincte est combinée avec SQLi pour obtenir le résultat souhaité. Le plus sophistiqué des trois sous-groupes, l'attaquant doit exécuter un exploit lui permettant d'exécuter SQLi qui ne fonctionnerait pas tout seul. Les exploits qui accompagnent le plus souvent SQLi dans ce genre d'attaque sont les violations d'authentification, les attaques par déni de service distribué (DDoS), le piratage DNS et les attaques de scripts intersites.

    Pourquoi les sites Web WordPress sont-ils vulnérables aux injections SQL ?

    WordPress est vulnérable à certaines injections SQL car il est très utilisé (actuellement 40% de tous les sites Web !) et existe depuis un certain temps (depuis 2003). WordPress est basé sur PHP, un langage de programmation côté serveur conçu pour s'intégrer facilement à MySQL.

    WordPress utilise des bases de données SQL pour stocker à peu près tout, des commentaires aux publications en passant par les comptes et les informations de commerce électronique. La grande majorité des tentatives d'injection SQL WordPress se font sur des formulaires qui soumettent des données à un script PHP contenant la requête SQL que l'attaquant souhaite exploiter.

    Ce n'est pas un défaut de conception, mais plutôt un effet secondaire de la façon dont WordPress a été conçu. Rappelez-vous, à peu près tout ce qui a commencé avant et jusqu'à « l'ère dot com » n'a pas été conçu dans un souci de sécurité. En fait, le magazine Web Phrack , désormais abandonné, a été la première source publique à discuter de SQLi dans son numéro de décembre 1998.

    Bien que les exploits initiaux de SQLi ne fonctionnent presque jamais sur un CMS moderne comme WordPress, les attaquants sont devenus rusés au fil des ans. Nous allons jeter un œil à un exemple simple de ce à quoi SQLi pourrait ressembler sur un site Web complètement non protégé. Ensuite, nous vous montrerons comment examiner les exploits existants pour différentes versions de WordPress.

    Avertissements importants concernant les injections SQL

    Dans presque tous les pays et états développés, même tenter d'exploiter un site WordPress que vous ne possédez pas est illégal. Les sanctions peuvent être assez sévères et même conduire à l'emprisonnement dans certains cas ! Bien que vous soyez libre d'essayer nos exemples sur votre propre matériel , n'essayez jamais de le faire sans autorisation explicite sur d'autres sites.

    Avant de continuer, il y a une autre note importante que nous voulons clarifier pour vous aider à rester sur la bonne voie avec votre parcours conjoint WordPress et la cybersécurité !

    Garder votre version de WordPress à jour est l'une des meilleures défenses contre les exploits SQLi. Même si cela signifie casser temporairement quelques plugins, cela en vaut la peine pour la sécurité de votre site.

    Exemple d'injection SQL

    Maintenant que nous avons éliminé ces avertissements, examinons les exemples SQLi. Pour les comprendre, vous aurez besoin de connaître un peu le jargon SQL. SQL utilise des commandes telles que SELECT pour récupérer des données, DROP TABLE pour détruire complètement une table dans une base de données, DELETE pour supprimer des lignes d'une table, etc. De plus, le caractère « * » signifie « tous » en SQL.

    La requête la plus basique en SQL est : SELECT * FROM TABLE_NAME. Cela dit essentiellement d'imprimer toutes les données d'une table nommée "TABLE_NAME". Lorsque vous soumettez des données dans un formulaire de connexion, cela est exécuté via un script PHP qui fait correspondre vos informations d'identification avec une table d'utilisateurs. Dans notre exemple, nous supposerons que nous sommes très mauvais en cybersécurité et que nous avons une table en texte clair entièrement non cryptée avec des colonnes appelées USER et PASS.

    Préparation de la requête

    Dans notre base de données très mal sécurisée, notre table avec les identifiants et mots de passe s'appelle BADLY_DONE_TABLE. La requête pour authentifier un utilisateur se connectant est simplement : SELECT * FROM BADLY_DONE_TABLE WHERE USER = '[nom d'utilisateur du formulaire]' AND PASS = '[mot de passe du formulaire]'.

    Comme vous pouvez le voir, nous disons de saisir la "liste" des utilisateurs, qui ne devrait être qu'un seul, si le nom d'utilisateur et le mot de passe saisis dans le formulaire correspondent. SQL permet également au mot-clé OR d'être utilisé dans des instructions conditionnelles, comme le AND que vous voyez dans notre requête.

    Maintenant, il est temps de fabriquer notre exploit.

    Exploiter notre requête SQL non protégée

    Notre requête est configurée pour renvoyer l'utilisateur si notre nom d'utilisateur et notre mot de passe correspondent. En gardant à l'esprit qu'un guillemet simple terminera une chaîne, nous pouvons taper "Blahblahblah" comme nom d'utilisateur, puis ' OU '1'='1.

    Nous profitons du fait que notre requête est formée dynamiquement et que l'entrée n'est pas « nettoyée » avant d'être exécutée. Essentiellement, nous disons que si le nombre « 1 » est égal au nombre « 1 » (étonnamment, c'est le cas !), alors videz tout de la table, que les informations d'identification que nous avons entrées soient correctes ou non.

    En 1998, cela aurait fonctionné. Maintenant, il faut généralement beaucoup plus de compétences à la fois en SQL et en SQLi pour créer des exploits fonctionnels pour WordPress.

    Injections SQL et sites Web WordPress

    Notre exemple précédent ne fonctionnerait pas sur les sites WordPress modernes à moins qu'un administrateur de site ne se mette en quatre pour désactiver toutes les mesures de sécurité. Cependant, en utilisant les mêmes principes, les pirates continuent de créer et de vendre des exploits SQLi à d'autres utilisateurs malveillants.

    Parce que WordPress est open source et a une grande communauté de développement derrière lui, de nombreux chercheurs en sécurité trouvent souvent ces exploits avant un pirate informatique. Ils les signalent ensuite à l'équipe WordPress et l'exploit est corrigé. Dans certains cas malheureux, un pirate informatique localise d'abord l'exploit, le rendant «à l'état sauvage», forçant l'équipe WordPress à apporter une solution rapide dès que possible et à le publier sous forme de mise à jour.

    Si vous souhaitez voir les exploits d'injection actuels et précédents pour WordPress, vous pouvez consulter une base de données CVE. Celui-ci contient un index des menaces de sécurité avec le nom du produit, les versions affectées et une description générale du fonctionnement de l'exploit. Presque tous les exploits que vous trouverez sur des listes comme celles-ci sont déjà corrigés, mais ils sont parfaits à utiliser comme matériel d'apprentissage.

    Prévention des injections SQL

    Après avoir lu ceci, vous vous demandez probablement comment vous assurer que votre site WordPress ne deviendra pas la prochaine victime d'une attaque SQLi. La bonne nouvelle, c'est qu'il n'est pas nécessaire d'être un professionnel de la sécurité pour se protéger des attaques SQLi !

    • Faites très attention aux fichiers PHP que vous écrivez ou obtenez d'autres sites et installez (en particulier, les plugins WordPress). Tout ce qu'il faut, c'est un script PHP faiblement conçu qui ne nettoie pas les entrées des utilisateurs pour ruiner votre site WordPress.
    • Utilisez un plugin de surveillance de sécurité bien connu comme iThemes Security Pro pour vous alerter au cas où quelqu'un tenterait de commettre cette attaque contre votre site afin que vous puissiez le bloquer au préalable.
    • Plus important encore, vous devez toujours garder votre site WordPress à jour avec la dernière version. De nombreux propriétaires de sites retardent la mise à jour pour une raison ou une autre, et c'est la raison de la grande majorité des violations de données.
    • Gardez vos plugins et thèmes WordPress à jour. On ne le dira jamais assez. Les thèmes et plugins vulnérables sont la principale raison pour laquelle les sites WordPress sont piratés.
    Recevez le rapport hebdomadaire sur les vulnérabilités WordPress directement dans votre boîte de réception.
    S'inscrire maintenant

    5 étapes pour empêcher les injections WordPress SQL

    1. Téléchargez et installez le plugin iThemes Security Pro

    Pour commencer à sécuriser et à protéger votre site, téléchargez et installez le plugin iThemes Security Pro.

    Obtenez iThemes Security Pro maintenant

    2. Activez la gestion des versions pour maintenir à jour le noyau, les plugins et les thèmes de WordPress

    En termes simples : vous vous exposez à une attaque si vous utilisez des versions obsolètes de WordPress, des plugins et des thèmes sur votre site Web. Les mises à jour de version incluent souvent des correctifs pour les problèmes de sécurité dans le code, y compris les injections SQL et les vulnérabilités d'exécution de code à distance (RCE). Il est donc important de toujours exécuter la dernière version de tous les logiciels installés sur votre site Web WordPress.

    Les mises à jour apparaîtront dans votre tableau de bord WordPress dès qu'elles seront disponibles. Prenez l'habitude d'exécuter une sauvegarde, puis d'exécuter toutes les mises à jour disponibles chaque fois que vous vous connectez à votre site WordPress. Bien que la tâche d'exécuter les mises à jour puisse sembler gênante ou fastidieuse, il s'agit d'une bonne pratique de sécurité WordPress importante.

    mises à jour du plugin wordpress

    Il est difficile de garder une trace de chaque vulnérabilité WordPress divulguée - nous les suivons et les partageons dans nos résumés des vulnérabilités WordPress - et comparons cette liste aux versions des plugins et des thèmes que vous avez installés sur votre site Web. Cependant, cela n'empêche pas les pirates WordPress de cibler les plugins et les thèmes présentant des vulnérabilités connues. Avoir un logiciel avec des vulnérabilités connues installé sur votre site donne aux pirates les plans dont ils ont besoin pour prendre le contrôle de votre site Web.

    Obtenez le rapport hebdomadaire sur les vulnérabilités WordPress
    S'inscrire maintenant

    La fonction de gestion de version du plugin iThemes Security Pro vous permet de mettre à jour automatiquement WordPress, les plugins et les thèmes. Au-delà de cela, Version Management propose également des options pour renforcer votre site Web lorsque vous exécutez un logiciel obsolète et rechercher d'anciens sites Web.

    Pour commencer à utiliser la gestion des versions, activez le module sur la page principale des paramètres de sécurité.

    Cliquez maintenant sur le bouton Configurer les paramètres pour examiner de plus près les paramètres, tous conçus pour protéger votre site.

    • Mises à jour WordPress – Installez automatiquement la dernière version de WordPress.
    • Mises à jour des plugins – Installez automatiquement les dernières mises à jour des plugins. L'activation de ce paramètre désactivera la fonctionnalité des plugins de mise à jour automatique de WordPress pour éviter les conflits.
    • Mises à jour de thème – Installez automatiquement les dernières mises à jour de thème. L'activation de ce paramètre désactivera la fonctionnalité de mise à jour automatique du thème WordPress pour éviter les conflits.
    • Renforcez le site lors de l'exécution d'un logiciel obsolète - Ajoutez automatiquement des protections supplémentaires au site lorsqu'une mise à jour disponible n'a pas été installée depuis un mois.
    • Analyser les anciens sites WordPress – Exécutez une analyse quotidienne du compte d'hébergement pour les anciens sites WordPress qui pourraient permettre à un attaquant de compromettre le serveur. Un seul site WordPress obsolète avec une vulnérabilité pourrait permettre aux attaquants de compromettre tous les autres sites sur le même compte d'hébergement.
    • Mise à jour automatique si la vulnérabilité corrige - Cette option fonctionne en tandem avec l'analyse du site iThemes Security Pro pour rechercher sur votre site Web les vulnérabilités connues de WordPress, des plugins et des thèmes et appliquer un correctif lorsqu'il est disponible.

    3. Analysez votre site à la recherche de plugins et de thèmes vulnérables

    Le scanner de site iThemes Security Pro est un autre moyen de sécuriser et de protéger votre site Web WordPress contre la principale cause de tous les piratages logiciels : les plugins obsolètes et les thèmes présentant des vulnérabilités connues. Le scanner de site recherche sur votre site les vulnérabilités connues et applique automatiquement un correctif s'il est disponible.

    Les 3 types de vulnérabilités WordPress vérifiés

    1. Vulnérabilités WordPress
    2. Vulnérabilités des plugins
    3. Vulnérabilités du thème

    Pour activer l'analyse du site sur les nouvelles installations, accédez aux paramètres d'iThemes Security Pro et cliquez sur le bouton Activer dans le module des paramètres de l' analyse du site .

    Pour déclencher une analyse de site manuelle, cliquez sur le bouton Analyser maintenant sur le widget d'analyse de site situé dans la barre latérale droite des paramètres de sécurité.

    Les résultats de l'analyse du site s'afficheront dans le widget.

    Si l'analyse du site détecte une vulnérabilité, cliquez sur le lien de vulnérabilité pour afficher la page de détails.

    Sur la page de vulnérabilité de l'analyse du site, vous verrez s'il existe un correctif disponible pour la vulnérabilité. Si un correctif est disponible, vous pouvez cliquer sur le bouton Mettre à jour le plug- in pour appliquer le correctif sur votre site Web.

    Il peut y avoir un délai entre le moment où un correctif est disponible et la mise à jour de la base de données des vulnérabilités de sécurité iThemes pour refléter le correctif. Dans ce cas, vous pouvez désactiver la notification pour ne plus recevoir d'alertes liées à la vulnérabilité.

    Important : vous ne devez pas désactiver une notification de vulnérabilité tant que vous n'avez pas confirmé que votre version actuelle inclut un correctif de sécurité ou que la vulnérabilité n'affecte pas votre site.

    4. Activer la détection de changement de fichier

    La clé pour détecter rapidement une faille de sécurité consiste à surveiller les modifications apportées aux fichiers sur votre site Web. La fonction de détection des modifications de fichiers dans iThemes Security Pro analysera les fichiers de votre site Web et vous alertera lorsque des modifications se produisent sur votre site Web.

    Il existe plusieurs raisons légitimes pour lesquelles vous verriez de nouvelles activités de modification de fichiers dans vos journaux, mais si les modifications apportées étaient inattendues, vous devez prendre le temps de vous assurer que les modifications ne sont pas malveillantes. Par exemple, si vous voyez une modification apportée à un plugin à la même date et heure que vous avez mis à jour le plugin, il n'y aurait aucune raison d'enquêter

    Pour commencer à surveiller les modifications apportées aux fichiers , activez la détection des modifications de fichiers sur la page principale des paramètres de sécurité.

    Une fois la détection des modifications de fichiers activée, iThemes Security Pro commencera à analyser tous les fichiers de votre site Web en morceaux . L'analyse de vos fichiers en morceaux aidera à réduire les ressources nécessaires pour surveiller les modifications apportées aux fichiers.

    L'analyse initiale des modifications de fichiers créera un index des fichiers de votre site Web et de leurs hachages de fichiers. Un hachage de fichier est une version abrégée et non lisible du contenu du fichier.

    Une fois l'analyse initiale terminée, iThemes Security Pro continuera à analyser votre fichier par morceaux. Si un hachage de fichier change lors de l'une des analyses suivantes, cela signifie que le contenu du fichier a changé.

    Vous pouvez également exécuter une modification de fichier manuelle en cliquant sur le bouton Analyser les fichiers maintenant dans les paramètres de détection de modification de fichier

    Les modifications de fichiers se produisent tout le temps, et recevoir une alerte par e-mail pour chaque modification deviendrait rapidement écrasante. Et avant que vous ne le sachiez, cela devient une situation de garçon qui a crié au loup, et vous commencez à ignorer complètement les alertes de changement de fichier.

    La bonne nouvelle est qu'iThemes Security Pro identifie intelligemment les modifications légitimes pour réduire les notifications et comment vous pouvez désactiver les notifications pour les fichiers qui devraient être mis à jour fréquemment. Vous pouvez gérer toutes vos notifications de sécurité iThemes à partir du centre de notifications dans le plug-in iThemes Security. Depuis votre tableau de bord d'administration WordPress, accédez à Sécurité > Paramètres et localisez le module Centre de notifications .

    5. Activez l'authentification à deux facteurs pour les utilisateurs qui modifient le site Web

    L'authentification à deux facteurs est un processus de vérification de l'identité d'une personne en exigeant deux méthodes de vérification distinctes. Google a partagé sur son blog que l'utilisation de l'authentification à deux facteurs peut arrêter 100% des attaques de bots automatisées. Pas mal de cotes !

    Le plugin iThemes Security vous permet d'activer l'authentification à deux facteurs pour votre site WordPress afin que les utilisateurs doivent entrer un code secondaire pour se connecter.

    Les trois méthodes d'authentification à deux facteurs fournies par iThemes Security Pro incluent :

    1. Application mobile - La méthode de l'application mobile est la méthode d'authentification à deux facteurs la plus sécurisée fournie par iThemes Security Pro. Cette méthode nécessite que vous utilisiez une application mobile gratuite à deux facteurs comme Authy ou Google Authenticator.
    2. E - mail - La méthode d'e-mail à deux facteurs enverra des codes sensibles au temps à l'adresse e-mail de votre utilisateur.
    3. Codes de sauvegarde – Un ensemble de codes à usage unique qui peuvent être utilisés pour se connecter en cas de perte de la méthode principale à deux facteurs.

    Pour commencer à utiliser l'authentification à deux facteurs sur votre site Web, activez la fonction sur la page principale des paramètres iThemes Security Pro.

    Suivez les étapes ici pour continuer à configurer l'authentification à deux facteurs pour votre site WordPress. Si vous avez suivi nos recommandations et activé les exigences de force pour les utilisateurs privilégiés, la prochaine chose que vous verrez est l'endroit où entrer le jeton à deux facteurs.

    authentification à deux facteurs

    Conclusion : Vers un Web plus sûr, ensemble

    Ne vous inquiétez pas si vous vous sentez un peu dépassé lorsque vous découvrez toutes les menaces de sécurité potentielles qui recherchent votre site WordPress. La vérité est que les menaces sont nombreuses, mais les solutions peuvent être simples.

    Nous espérons que ce guide vous a aidé à comprendre le risque d'attaques par injection SQL sur votre site WordPress. En mettant en œuvre quelques bonnes pratiques de sécurité WordPress, ainsi que les 5 étapes ci-dessus, vous aurez une meilleure ligne de défense.

    Obtenez le contenu bonus : Un guide de la sécurité WordPress
    Cliquez ici
    injection SQL