vulnérabilité web

C’est quoi une vulnérabilité web ?

Les données publiées par SiteLock sont sans appel : en moyenne, les sites web subissent 22 attaques par jour, soit plus de 8 000 attaques par an. On parle alors de vulnérabilité d’un site web, qui correspond à une faiblesse ou à une mauvaise configuration du code d’un site ou d’une application web qui permet à un hacker d’accéder à un certain niveau de contrôle dudit site, voire même du serveur qui l’héberge. Souvent, les vulnérabilités sont exploitées par des moyens automatisés, tels que les scanners de vulnérabilité et les botnets. Les cybercriminels créent des outils spécialisés qui parcourent le web, et notamment certaines plateformes comme WordPress ou Joomla, à la recherche de vulnérabilités communes et publiées. Une fois trouvées, ces vulnérabilités sont ensuite exploitées pour voler des données, diffuser du contenu malveillant ou encore insérer du spam dans le site vulnérable.

Types de vulnérabilités des sites web

Il existe cinq grandes familles de vulnérabilités de sites Web, fréquemment exploitées par les cybercriminels. Il ne s’agit pas là d’une liste exhaustive de toutes les vulnérabilités possibles qu’un hacker pourrait exploiter dans un site ou une application, mais plutôt d’une sélection des vulnérabilités les plus courantes aujourd’hui. Explorons tout cela un peu plus en détail :

Vulnérabilités d’injection SQL (SQLi) : les vulnérabilités d’injection SQL font référence à des zones du code d’un site Web où une entrée directe de l’utilisateur est transmise à une base de données. Les cybercriminels utilisent ces formes pour insérer du code malveillant, parfois appelé charge utile (payload), dans la base de données d’un site Web. Cela permet au cybercriminel d’accéder au site web de diverses manières, notamment :

  • Injecter des messages malveillants/spam dans un site ;
  • Voler des informations sur les clients ;
  • Contourner l’authentification pour prendre le contrôle total du site Web.

En raison de sa polyvalence, l’injection SQL est l’une des vulnérabilités les plus couramment exploitées. Elle est fréquemment utilisée pour accéder à des applications de systèmes de gestion de contenu (CMS) open source, tels que Joomla, WordPress et Drupal. Les attaques par injection SQL les plus connues ont été liées à une violation de la Commission d’assistance électorale des États-Unis et à un forum de jeux vidéo populaire pour Grand Theft Auto, ce qui a entraîné l’exposition des informations d’identification des utilisateurs.

Cross-Site Scripting (XSS) : le Cross-Site Scripting se produit lorsque des attaquants injectent des scripts par le biais d’une entrée utilisateur non autorisée ou d’autres champs sur un site web afin d’exécuter du code sur le site. Le scripting intersite est utilisé pour cibler les visiteurs du site web, plutôt que le site web ou le serveur lui-même. Cela signifie souvent que les attaquants injectent du JavaScript sur le site Web, de sorte que le script soit exécuté dans le navigateur du visiteur. Les navigateurs sont incapables de discerner si le script est censé faire partie du site Web ou non, ce qui entraîne des actions malveillantes, comme le détournement de session, la diffusion de spam à des visiteurs peu méfiants, ou encore le vol des données de session.

Il faut savoir que certaines des attaques les plus importantes contre WordPress sont dues à des vulnérabilités de type « cross site-scripting ». Cependant, le XSS n’est pas limité aux seules applications open source. Récemment, une vulnérabilité de type « cross-site scripting » a été découverte dans le système du géant du jeu Steam, qui aurait exposé les identifiants de connexion aux attaquants.

Injection de commande (Shell Code Injection) : les failles d’injection de commande permettent aux attaquants de passer et d’exécuter du code à distance sur le serveur d’hébergement du site web. Cela se produit lorsque l’entrée de l’utilisateur qui est transmise au serveur, comme les informations d’en-tête, n’est pas correctement validée, ce qui permet aux attaquants d’inclure des commandes shell avec les informations de l’utilisateur. Les attaques par injection de commandes sont particulièrement critiques car elles peuvent permettre aux cybercriminels d’entreprendre ce qui suit :

  • Détourner un site entier ;
  • Détourner un serveur d’hébergement ;
  • Utiliser le serveur détourné dans des attaques de botnet.

Enfin, rappelons que l’une des failles les plus dangereuses et les plus répandues en matière d’injection de commandes est la vulnérabilité Shellshock qui a touché la plupart des distributions Linux.

Inclusion de fichiers (LFI/RFI) : les attaques par inclusion de fichiers à distance (RFI) utilisent les fonctions d’inclusion des langages d’application Web côté serveur comme PHP pour exécuter du code à partir d’un fichier stocké à distance. Les attaquants hébergent des fichiers malveillants et profitent ensuite d’une entrée utilisateur mal nettoyée pour injecter ou modifier une fonction d’inclusion dans le code PHP du site victime. Cette inclusion peut ensuite être utilisée pour effectuer les actions suivantes :

  • Livrer des charges utiles (payloads) malveillantes qui peuvent être utilisées pour inclure des pages d’attaque et de phishing dans les navigateurs des visiteurs ;
  • Inclure des fichiers shell malveillants sur des sites Web accessibles au public ;
  • Prendre le contrôle de l’espace d’administration d’un site Web ou du serveur hôte.

L’inclusion de fichiers locaux (LFI), comme l’inclusion de fichiers à distance, peut se produire lorsque l’entrée de l’utilisateur est capable de modifier le chemin complet ou absolu des fichiers inclus. Les attaquants peuvent alors utiliser ce vecteur pour obtenir un accès en lecture ou en écriture à des fichiers locaux sensibles, tels que les fichiers de configuration contenant les informations d’identification de la base de données. Le cybercriminel peut également réaliser une attaque par traversée de répertoire, en modifiant le chemin d’accès d’un fichier inclus pour examiner les fichiers du back-end et du serveur hôte, exposant ainsi des données sensibles. Une attaque par inclusion de fichier locale peut potentiellement devenir une attaque par inclusion de fichier distante si, par exemple, l’attaquant est capable d’inclure des fichiers journaux qui ont été précédemment « enrichis » avec du code malveillant par le cybercriminel par le biais d’une interaction publique.

Ces types de failles sont fréquemment exploitées pour lancer d’autres attaques, telles que les attaques DDoS et les attaques de type cross-site scripting. Elles ont également été utilisées pour exposer et voler des informations financières sensibles : Starbucks a fait les frais d’une attaque par inclusion qui a compromis les données des cartes de crédit de la franchise.

Cross-Site Request Forgery (CSRF) : les attaques de type Cross-Site Request Forgery sont moins courantes, mais peuvent être très dangereuses. Les attaques CSRF piègent les utilisateurs ou les administrateurs du site pour qu’ils effectuent, à leur insu, des actions malveillantes qui profitent à l’attaquant. Par conséquent, ce dernier peut être en mesure d’effectuer les actions suivantes en utilisant des entrées utilisateur valides :

  • Modifier les valeurs des commandes et les prix des produits ;
  • Transférer des fonds d’un compte à un autre ;
  • Modifier les mots de passe des utilisateurs pour détourner des comptes.

Ces attaques sont particulièrement compromettantes pour les sites e-commerce et les sites des institutions financières, car les attaquants peuvent avoir accès à des informations financières extrêmement sensibles. Une attaque CSRF a récemment été utilisée pour prendre le contrôle des paramètres DNS d’une banque brésilienne pendant plus de cinq heures.

Comment prévenir les vulnérabilités web ?

Il existe des mesures simples que vous pouvez prendre pour atténuer et empêcher les vulnérabilités qui permettent aux cybercriminels d’accéder à votre site Web sans autorisation. Cela dit, le meilleur moyen pour remédier aux failles de sécurité est de faire appel à une société spécialisée en pentest web. Entre temps, voici une liste de mesures que vous pouvez prendre en interne.

Mettez vos applications à jour

La première étape essentielle pour sécuriser votre site Web consiste à s’assurer que toutes les applications et leurs plugins associés sont à jour. Les éditeurs publient fréquemment des correctifs de sécurité pour leurs applications et il est important d’effectuer ces mises à jour en temps voulu. Il faut savoir que les cybercriminels suivent de près l’actualité des applications open source et sont connus pour utiliser les avis de mise à jour pour trouver des sites web vulnérables. Pour garder une longueur d’avance sur les hackers, n’hésitez pas à vous abonner à des mises à jour automatiques des applications et à des notifications par courriel sur les correctifs critiques.

Utilisez un pare-feu d’application Web (WAF)

Les pare-feu d’application Web constituent la première ligne de défense contre ceux qui sondent votre site Web à la recherche de vulnérabilités. Les pare-feu d’applications Web empêchent le mauvais trafic d’accéder à votre site Web. Ils bloquent notamment les robots, les adresses IP connues pour le spam ou les attaques, les scanners automatisés et les entrées utilisateur basées sur des attaques.

Utilisez un scanner de logiciels malveillants

Votre dernière ligne de défense est l’utilisation d’un scanner automatique de logiciels malveillants réputé. Il est recommandé d’opter pour un scanner capable d’identifier automatiquement les vulnérabilités et supprimer les logiciels malveillants connus.

Les programmeurs seniors peuvent choisir d’examiner manuellement leur code et d’implémenter des filtres PHP pour assainir les entrées des utilisateurs. Cela inclut des méthodologies telles que la limitation des formulaires de téléchargement d’images aux fichiers .jpg ou .gif, et l’établissement d’une liste des soumissions de formulaires pour n’autoriser que les entrées prévues.

Comprendre les types de vulnérabilités que les cybercriminels tentent d’utiliser pour exploiter vos applications web est une première étape importante pour sécuriser votre site web. Les vulnérabilités peuvent avoir des conséquences désastreuses non seulement pour votre site Web et votre serveur, mais aussi pour les données de vos clients.

About the author: admin