Comment Protéger WordPress des Cyberattaques Courantes

Partager sur linkedin
Partager sur facebook
Partager sur twitter

Table Des Matières

Les sites WordPress sont régulièrement piratés, car il s’agit de loin du logiciel le plus populaire pour la création de sites Web et de blogs. Cette popularité, associée à la nature de son architecture personnalisable, en fait une cible valorisée par les attaquants. Sa configuration par défaut comporte plusieurs vulnérabilités, tandis que des failles de sécurité sont régulièrement découvertes dans les plugins et les thèmes développés par les utilisateurs. De plus, le coeur du logiciel WordPress contient également une panoplie de vulnérabilités critiques dans les versions antérieures.

Au lieu de fournir une simple liste de conseils sur la façon de sécuriser WordPress, cet article montrera des exemples concrets de cyberattaques effectuées par les pirates (et les spécialistes en test d’intrusion comme nous chez Vumetric) exploitent ces faiblesses pour compromettre les sites WordPress – et comment prévenir de telles attaques.

Attaque #1 : Forcer la connexion par « Brute Force »

Cette attaque est la plus évidente. Par défaut, la page de connexion de WordPress est accessible à l’ensemble de l’Internet, est facile à trouver (il suffit d’aller sur /wp-login.php) et ne comporte pas de mesures d’atténuation d’attaques par force brute telles qu’un CAPTCHA ou une limitation de tentatives. Cela en fait une cible de choix pour les pirates et les robots :

Vulnérabilité WordPress Attaque Force Brute
Attaque « brute force » sur la page de connexion de WordPress

Augmenter les chances : l’énumération des utilisateurs

Il existe plusieurs façons pour les attaquants d’augmenter leurs chances de pénétrer dans WordPress par force brute, la première étant l’énumération des utilisateurs par l’une des méthodes suivantes :

  1. Trouver des noms d’utilisateurs valides en regardant les auteurs des messages et des commentaires.
  2. Utilisation du tâtonnement sur la page de connexion en vérifiant les messages d’erreur (y a-t-il une erreur indiquant que l’utilisateur n’existe pas, ou que le mot de passe fourni n’est pas valide ?)
  3. Utilisation du point de terminaison WordPress JSON API « /wp-json/wp/v2/users » pour obtenir une liste d’informations valides sur les utilisateurs.
  4. Récupération des noms d’utilisateur à partir de points de terminaison intégrés et de fonctionnalités telles que les flux RSS.
  5. Des outils qui automatisent ce qui précède (comme WPScan).

Grâce à ces connaissances, les pirates peuvent cibler uniquement les comptes d’utilisateurs légitimes, ce qui rend leur attaque à la fois plus rapide et plus susceptible de réussir. Voici un exemple d’utilisation de l’API des utilisateurs pour recueillir des informations en vue d’une attaque :

Énumération d'utilisateur WordPress
Énumération d’utilisateur WordPress

Ci-dessus, nous voyons que « bjoel » est un nom d’utilisateur valide pour le site. Parfois, ce point de terminaison comprend également des adresses électroniques qu’un attaquant malin pourrait vérifier en les comparant à des violations de données connues afin d’effectuer un attaque de « credential stuffing » ou des attaques de phishing. Si cela échoue, une attaque par force brute plus robuste peut être lancée.

Augmenter les chances : accélérer l’attaque

Cela nous amène à la deuxième façon dont les pirates augmentent leurs chances de réussite : le fichier xmlrpc.php.

En bref, xmlrpc est un précurseur de l’API WordPress qui permet une interaction à distance avec WordPress via des requêtes au format XML. L’une des caractéristiques de xmlrpc est que de multiples opérations peuvent être effectuées en une seule requête dans un souci d’efficacité. Cependant, cela signifie qu’un attaquant peut soumettre plusieurs tentatives de connexion en une seule requête, accélérant ainsi considérablement son attaque.

Comparons deux attaques par force brute, la première utilisant la méthode traditionnelle d’une seule tentative par requête via le formulaire de connexion :

Vulnérabilité WordPress Attaque Force Brute
Attaque « brute force » sur une page de connexion de WordPress

En utilisant un paramètre assez agressif de 10 threads, il est possible d’essayer environ 1500 mots de passe en deux minutes. Comparons maintenant avec une attaque accélérée utilisant xmlrpc pour soumettre plusieurs tentatives d’authentification dans chaque requête :

Vulnérabilité WordPress Attaque Force Brute
Attaque « brute force » sur la page de connexion de WordPress

Lorsqu’elle est disponible, la prise en charge des appels multiples de xmlrpc.php permet de réaliser la même attaque par force brute en sept secondes au lieu de deux minutes. Ceci est dû au fait qu’il soumet 500 tentatives de connexion dans chaque requête. Ce type de gain de performance crée une attaque par force brute optimisée qui a plus de chances de réussir qu’une attaque traditionnelle dans le même laps de temps.

Prévention

Empêcher l’énumération des utilisateurs est difficile dans WordPress, mais les étapes suivantes aident :

  • Définissez un nom d’affichage (alias pseudo) distinct de votre nom d’utilisateur. Il apparaîtra dans des endroits comme les articles et les commentaires sans révéler le nom d’utilisateur que vous utilisez pour vous connecter à WordPress.
  • Restreindre l’accès à l’API JSON de WordPress, en particulier au point de terminaison « /wp-json/wp/v2/users « *.
  • Débarrassez-vous de l’utilisateur « admin » par défaut et créez votre propre compte.

À partir de là, les attaques par force brute peuvent être atténuées en procédant comme suit :

  • Restreindre l’accès à xmlrpc.php*.
  • Activez l’authentification à deux facteurs.
  • Restreindre l’accès à la page de connexion à un ensemble limité d’adresses IP.

En outre, il existe plusieurs plugins pour WordPress axés sur la sécurité qui effectuent certaines des opérations ci-dessus tout en ajoutant des protections supplémentaires par force brute (nous y reviendrons).

*Remarque : ces fonctionnalités peuvent être nécessaires pour le fonctionnement de certains plugins et intégrations ; toutefois, en règle générale, elles ne sont pas nécessaires pour les sites de base. Il existe plusieurs façons de restreindre l’accès – la plus simple étant une règle de refus .htaccess – mais d’autres options existent pour limiter l’accès aux utilisateurs authentifiés ou à d’autres conditions spécifiques. Nous vous recommandons de rechercher ce qui convient le mieux à votre cas d’utilisation.

Découvrez comment Vumetric a sécurisé le site WordPress de centaines d'organisations.

Quelle que soit la complexité de votre site web, nos experts comprennent les vulnérabilités les plus complexes de la plateforme WordPress qui pourraient être désastreuses si elles sont exploitées par un pirate.

Attaque n° 2 : exploitation d’un code vulnérable

Si un pirate ne parvient pas à trouver des informations d’identification légitimes pour se connecter à votre site, il peut chercher à exploiter les vulnérabilités qui existent dans les plugins, les thèmes ou le noyau de WordPress. En raison de sa popularité et de sa facilité de personnalisation, l’écosystème WordPress a toujours été l’un des plus ciblés et des plus exploités, avec plus de 1 250 entrées présentes sur ExploitDB au moment de la rédaction de cet article.

Voyons comment l’un de ces exploits peut être utilisé par les pirates.

Exemple d’exploitation : Mail Masta Plugin

Le plugin WordPress « Mail Masta » version 1.0 est vulnérable à une inclusion de fichier local (LFI). Une LFI permet à un attaquant de lire des fichiers arbitraires sur l’hôte vulnérable, y compris des éléments comme le fichier de configuration de WordPress en utilisant une simple requête web :

WordPress vulnerable plugin
Exploitation d’un plugin de WordPress vulnérable

En utilisant cette vulnérabilité, nous voyons le nom d’utilisateur et le mot de passe de la base de données pour l’instance WordPress associée. Ces informations peuvent être utilisées pour se connecter directement au panneau d’administration de WordPress (si « elyana » réutilise son mot de passe). Elles pourraient également être utilisées pour accéder à la base de données directement ou avec quelque chose comme phpMyAdmin afin d’ajouter un nouvel utilisateur administrateur ou de craquer/changer le mot de passe des utilisateurs existants.

Prévenir l’attaque

La prévention est assez simple :

  • Mettez régulièrement à jour votre installation WordPress (noyau, plugins et thèmes). La mise en place d’un événement de calendrier répétitif comme rappel peut aider à éviter que cela ne passe inaperçu.
  • Réduisez autant que possible l’utilisation de codes tiers, par exemple les thèmes et les plugins.
  • N’utilisez que du code tiers provenant de sources fiables et de projets actifs et bien maintenus.
  • Effectuer un examen du code pour toute personnalisation apportée à votre site.
  • Inscrivez-vous à une liste d’adresses électroniques qui fournit des avis de sécurité importants.

Attaque n°3 : Compromettre le système

Maintenant que notre attaquant a forcé ou exploité son chemin vers votre panneau d’administration WordPress, il est temps pour lui de compromettre le système sous-jacent par l’exécution de commandes. Il y a 3 façons principales de le faire :

  1. Télécharger un plugin malveillant.
  2. Modifiez un fichier PHP (comme celui qui fait partie d’un thème).
  3. Trouvez un moyen de télécharger un fichier PHP malveillant.

À titre d’exemple, nous allons nous concentrer sur le point 2, car c’est l’un des plus faciles. Il suffit de se rendre dans Apparence -> Éditeur et de modifier le fichier 404.php du thème actif :

WordPress command execution vulnerability
Attaque par éxécution de commande sur un site WordPress

Maintenant, nous ajoutons un peu de code PHP pour obtenir l’exécution de la commande :

if (!empty($_GET[‘cmd’])) {

echo ‘<pre>’;

echo shell_exec($_GET[‘cmd’]);

echo ‘</pre>’;

exit();

}

Nous pouvons ensuite exécuter les commandes « whoami » et « ifconfig » sur le serveur en naviguant vers une URL inexistante et en fournissant un argument « cmd » :

Attaque par éxécution de commande sur un site WordPress
Attaque par éxécution de commande sur un site WordPress

À partir de là, il devient trivial de compromettre la base de données (en lisant le nom d’utilisateur et le mot de passe dans wp-config.php), d’obtenir un shell interactif sur le système sous-jacent et de lancer d’autres attaques. Si votre instance de WordPress est rattachée au réseau de votre entreprise, elle peut alors servir de point d’appui pour compromettre d’autres systèmes.

Les autres méthodes accomplissent essentiellement le même type de compromis par des moyens différents.

Prévention

Si un attaquant est arrivé à ce stade, il est généralement déjà trop tard. Il existe des mesures d’atténuation qui peuvent inclure la modification des permissions et des paramètres de configuration pour empêcher l’écriture de fichiers et la désactivation du support des plugins, mais

cela n’est pas très pratique dans la plupart des cas si vous voulez que votre instance de WordPress reste utilisable.

Une chose qui peut valoir la peine d’être faite est de désactiver les fonctions dangereuses via le fichier php.ini, par exemple :

  • exec
  • passthru
  • shell_exec  système
  • proc_open
  • popen
  • curl_exec
  • curl_multi_exec
  • parse_ini_file
  • montrer_source

Toutefois, cela peut ne pas être possible dans les environnements d’hébergement partagé et peut finir par interférer avec certains plugins et intégrations légitimes.

Autres conseils pour protéger WordPress contre les attaques communes

En plus de ce qui a été discuté, vous pouvez aider à sécuriser votre instance WordPress en faisant ce qui suit :

  • Assurez-vous que l’indexation des répertoires est désactivée. Cela se fait généralement dans la configuration du serveur Web et peut être vérifié rapidement en allant sur « /wpcontent/uploads/ » dans votre navigateur pour voir si vous obtenez une liste des fichiers téléchargés.
  • Faites attention à ne pas laisser de sauvegardes de fichiers dans la racine du site. Des sauvegardes lisibles de fichiers .php ou des vidages de bases de données peuvent conduire à une compromission par divulgation d’informations.
  • Faites des sauvegardes de routine et stockez-les hors du serveur en cas de compromission.
  • Utilisez un pare-feu d’application Web (WAF) pour déjouer les attaques. Cela peut se faire par le biais d’un fournisseur comme CloudFlare, mais le plugin WordPress Wordfence est spécifiquement conçu pour aider à renforcer votre système.
  • Enregistrez-vous pour obtenir une clé API gratuite pour WPscan et utilisez-la pour analyser votre site à la recherche de vulnérabilités et de mauvaises configurations avec la commande suivante : wpscan -e vp,vt,cb,dbe,u,m –api-token YOUR_API_KEY –url http://YOUR_WORDPRESS_SITE

Récapitulatif sur la façon dont les sites WordPress sont piratés

Récapitulons :

  1. L’énumération des utilisateurs et les attaques par force brute peuvent permettre aux pirates d’accéder à votre panneau d’administration WordPress.
  2. Un code vulnérable et obsolète peut permettre aux pirates de compromettre votre instance WordPress même sans informations d’identification valides ou sans possibilité de se connecter.
  3. Une instance de WordPress piratée peut conduire à la compromission du système sousjacent et à des menaces supplémentaires.

Prenez les mesures nécessaires pour vous protéger de ces risques en utilisant les informations couvertes dans cet article. Si vous voulez vous assurer que votre site WordPress ou toute autre infrastructure informatique est sécurisée, contactez l‘un de nos spécialistes certifiés pour obtenir l’avis d’un expert.

 

Un test d’intrusion, aussi connu sous le nom de « Pentest », est une tentative de piratage simulée qui identifie les possibilités pour les vrais attaquants de percer vos défenses. Cet exercice s’appuie généralement sur les outils utilisés par les pirates informatiques ainsi que diverses méthodologies professionnelles pour reproduire les étapes que les pirates modernes prendraient pour s’introduire dans vos systèmes informatiques.

De plus, un test tente d’exploiter vos vulnérabilités afin de déterminer leur impact potentiel sur votre entreprise si elles étaient utilisées dans un scénario de piratage réel. Ultimement, ils fournissent une liste de vulnérabilités avec leur niveau de risque respectif, ainsi que des recommandations techniques pour aider votre équipe à appliquer des mesures correctives et à se concentrer sur les vulnérabilités les plus critiques. Ces services permettent à votre organisation de répondre, entre autres, aux questions suivantes:

  • Un pirate informatique peut-il accéder à des informations sensibles ?
  • Un pirate peut-il détourner mes technologies pour commettre des actes malicieux ?
  • Une infection par un logiciel malveillant peut-elle se propager sur notre réseau ?
  • Un pirate peut-il altérer son rôle d’utilisateur dans une application afin d’obtenir des permissions administratives ?

Il existe de nombreux contextes dans lesquels un test d’intrusion doit être effectué. Voici quelques cas d’utilisation courante pour un pentest :

  • Dans le cadre du cycle de développement d’une application. (Pour tester la sécurité d’une nouvelle fonctionnalité/application)
  • Pour se conformer aux exigences de sécurité. (Tiers, PCI, ISO27001, etc.)
  • Pour protéger les données sensibles contre l’exfiltration.
  • Pour prévenir les infections par des logiciels malveillants. (logiciels de rançon, logiciels espions, etc.)
  • Pour prévenir les cyberattaques perturbatrices. (Comme le déni de service)
  • Dans le cadre d’une stratégie de gestion des risques liés à la cybersécurité.

Il est conseillé à toutes les entreprises de procéder à un test d’intrusion au moins une fois par an, ainsi qu’après toute mise à niveau ou modification importante du réseau de l’entreprise. Étant donné la rapidité avec laquelle de nouveaux exploits sont découverts, nous recommandons généralement de procéder à des tests trimestriels.

Diverses mesures sont prises au cours du projet pour prévenir l’impact potentiel de nos tests sur la stabilité de votre environnement technologique et la continuité de vos opérations commerciales. C’est pourquoi un plan de communication sera mis en place dès le début du projet afin de prévenir et d’atténuer tout impact potentiel. Un représentant de votre organisation sera désigné comme point de contact principal pour assurer une communication rapide en cas de situation ayant un impact direct sur la conduite de vos opérations quotidiennes, ou si des vulnérabilités critiques sont identifiées, pour lesquelles des mesures correctives doivent être mises en place rapidement.

Bien que nous utilisons une approche simple de notation des risques à 4 niveaux (critique, élevé, modéré, faible), notre évaluation des risques est  basée sur la norme du Common Vulnerability Scoring System (CVSS). Deux critères principaux sont pris en compte pour évaluer le niveau de risque de chaque vulnérabilité :

  • L’impact potentiel: L’impact potentiel d’une attaque qui exploite la vulnérabilité combiné à son effet sur la disponibilité du système, ainsi que sur la confidentialité et l’intégrité des données.
  • Exploitabilité: L’exploitabilité potentielle d’une vulnérabilité; une vulnérabilité qui est plus facile à exploiter augmente le nombre d’attaquants potentiels et donc la probabilité d’une attaque. Différents facteurs sont pris en compte lors de l’évaluation du potentiel d’exploitation d’une vulnérabilité (par exemple: vecteur d’accès, authentification, complexité opérationnelle, etc.)

Autres Articles du Blogue de Vumetric

Impact d'une cyberattaque

Les Conséquences d’une Cyberattaque sur Votre Entreprise

Une cyberattaque est une attaque menée par des pirates informatiques dans le but d’endommager un …

Lire l'Article
test d'intrusion vs bug bounty

Test d’Intrusion vs Bug Bounty

En raison de la récente vague d’incidents liés aux ransomwares, les organisations et les …

Lire l'Article
Comment sécuriser un site Wordpress

Comment Sécuriser Un Site WordPress (Version Débutante)

Selon WordFence, il y a 90,000 attaques par minute sur les sites WordPress. Bien que …

Lire l'Article

Certifications

Nous Détenons des Certifications Reconnues Mondialement

Contactez un Expert Certifié

Parlez avec un vrai spécialiste. Aucun engagement. Réponse sous 24h.

fournisseur de test d'Intrusion

Confidentialité

Appelez-nous au: 1-877-805-7475

Votre Site WordPress
Peut-il Être Piraté?

ou appelez nous directement au: