Tests d'intrusion pour les sites WordPress
Publié: 2020-03-20WordPress alimente de nombreux sites Web sur Internet. Il n'est donc pas surprenant que les attaquants chevronnés et les "script-kiddies" aiment cibler les sites Web WordPress. Que vous soyez un webmaster ou un professionnel de la sécurité, lorsque vous êtes chargé d'évaluer la posture de sécurité d'un site Web WordPress, il est généralement utile d'être conscient des pièges de sécurité courants dont les attaquants profitent généralement. Il est également important d'utiliser les bons outils de test d'intrusion.
Dans cet article, je couvrirai un certain nombre de failles de sécurité courantes, de mauvaises pratiques et d'informations utiles qu'un attaquant peut être en mesure d'abuser dans de nombreuses installations WordPress. Je soulignerai également un certain nombre d'outils que vous pouvez utiliser pour vous aider à automatiser le test de pénétration WordPress.
Attention : n'effectuez des tests d'intrusion de sécurité que sur des systèmes qui vous appartiennent ou pour lesquels vous avez obtenu l'autorisation. Comprenez les limites de l'accès qui vous a été accordé et respectez ces limites.
Problèmes de sécurité et mauvaises pratiques WordPress courants
Versions obsolètes du code WordPress
L'exécution d'anciennes versions du noyau WordPress contenant des vulnérabilités de sécurité est sans doute l'une des failles de sécurité les plus courantes concernant WordPress. Bien que les nouvelles versions de WordPress facilitent la mise à niveau vers la dernière version, il n'est pas rare que les anciens sites WordPress soient à la traîne.
Exécuter une ancienne version de WordPress sur Internet est une bombe à retardement. De nombreuses anciennes versions de WordPress contiennent des failles de sécurité. Bon nombre de ces problèmes de sécurité sont couramment exploités en masse par les attaquants.
Lors de l'audit d'un site Web WordPress pour les vulnérabilités de sécurité, c'est généralement l'une des toutes premières choses que vous voudriez vérifier. Heureusement pour les attaquants, par défaut, WordPress ajoute une balise méta HTML contenant la version de WordPress utilisée.
<meta name="generator" content=”WordPress 4.8.11″ />
Savoir qu'une installation WordPress exécute une ancienne version pourrait donner à un attaquant la possibilité de profiter d'une vulnérabilité connue. Utilisez la base de données des vulnérabilités de sécurité CVE pour rechercher les problèmes de sécurité connus dans le noyau de WordPress.
Versions obsolètes des thèmes et plugins WordPress
Le noyau WordPress est très sécurisé. Des millions d'utilisateurs et des pirates malveillants testent et examinent minutieusement le code. Cela signifie que la plupart du temps, les problèmes de sécurité sont repérés et corrigés avant qu'ils ne soient abusés par des attaquants. Cependant, il n'est pas à l'abri des failles de sécurité. Malheureusement, cela ne s'applique pas aux milliers de plugins et de thèmes WordPress.
N'importe qui peut soumettre un thème ou un plugin et le rendre disponible pour tout administrateur WordPress pour le télécharger et l'utiliser. Bien sûr, cela ne signifie pas que chaque plugin WordPress est mal codé et plein de vulnérabilités, loin de là. Cependant, les vulnérabilités connues exposent une surface d'attaque massive à WordPress dont vous devez être conscient lorsque vous effectuez un test de pénétration WordPress.
L'outil le plus rapide et sans doute le plus complet à utiliser pour identifier les plugins et thèmes WordPress vulnérables consiste à utiliser WPScan. WPScan est un scanner de sécurité WordPress open source à boîte noire fréquemment utilisé pour analyser les sites Web WordPress à la recherche de vulnérabilités connues dans le noyau, les plugins et les thèmes.
Lorsque vous utilisez WPScan pendant un pentest, assurez-vous de vous inscrire et de le configurer pour utiliser une clé API WPScan Vulnerability Database . La base de données de vulnérabilités WPScan est une base de données gérée par les auteurs de WPScan avec les dernières vulnérabilités connues et leurs versions respectives.
Pour en savoir plus sur WPScan et sur la manière d'exécuter différents types d'analyses, reportez-vous à la section Prise en main de WPScan.
Anciennes versions de PHP et serveurs web
WordPress est une application Web PHP et, par conséquent, toutes les meilleures pratiques de sécurité PHP s'appliquent également à WordPress. Lors d'un test d'intrusion WordPress, c'est l'une des toutes premières choses à rechercher. Les installations WordPress exécutant d'anciennes versions de PHP ou de logiciels de serveur Web (par exemple, Nginx, Apache HTTP Server, IIS…) peuvent exposer le site Web à toutes sortes d'attaques différentes.
Il est très facile de déterminer quel serveur Web et quelle version de PHP un site Web WordPress utilise. Dans de nombreux cas, tout ce qu'un attaquant doit faire est simplement de porter une attention particulière aux en-têtes de réponse HTTP renvoyés par le site Web. Vous pouvez envoyer une requête vous-même avec curl :
$ curl -s -D – http://167.71.67.124/ -o /dev/null | grep -i "Serveur\|X-Powered-By"
Recherchez les en-têtes HTTP Server et X-Powered-By dans la réponse :
Serveur : Apache/2.4.29 (Ubuntu)
Propulsé par X : PHP/5.5.9
Selon la version et la configuration du site Web, un attaquant peut être en mesure d'utiliser des vulnérabilités connues (par exemple https://www.cvedetails.com/vendor/74/PHP.html) pour obtenir des informations supplémentaires sur une cible. Ces informations peuvent aider à intensifier une attaque, voire à exécuter des commandes directement sur le serveur Web.
Énumération des noms d'utilisateur WordPress
À moins qu'un administrateur système n'ait pris des mesures pour l'empêcher, par défaut, WordPress est vulnérable aux attaques d'énumération d'utilisateurs. Attaques d'énumération d'utilisateurs WordPress, recherchez des différences subtiles dans la façon dont WordPress répond à des demandes particulières. En fonction de la réponse, l'attaquant peut déterminer si un utilisateur existe ou non, permettant à un attaquant d'utiliser potentiellement ces informations dans le cadre d'une attaque plus large.
Ce qui suit est une capture d'écran de WPScan effectuant une attaque d'énumération de nom d'utilisateur WordPress.
Mauvaises configurations du serveur Web
Liste des répertoires et autres erreurs de configuration du serveur Web
Outre les logiciels obsolètes, il faut toujours évaluer les éventuelles erreurs de configuration du serveur Web. Un serveur Web mal configuré peut rendre le site Web WordPress vulnérable à l'exploitation. Cela peut se produire même si le serveur Web exécute la dernière version du logiciel. Voici quelques erreurs de configuration typiques du serveur Web :
Liste des répertoires activée
La liste des répertoires est une mauvaise configuration très courante. Les serveurs Web Apache l'ont activé par défaut, et cela n'aide pas. La liste des répertoires répertorie simplement les fichiers et les répertoires sur un serveur Web dans une interface graphique lorsqu'il n'y a pas de fichier d'index.
Bien que cela ne soit pas particulièrement dangereux en soi, il offre à un attaquant la possibilité de parcourir le contenu du répertoire de votre serveur Web. Cela pourrait lui permettre de voir tous les fichiers de votre site Web, dont la plupart ne devraient pas être accessibles au public mais le sont, comme les sauvegardes, les mots de passe et les fichiers de configuration.
Fichiers de sauvegarde
Les fichiers de sauvegarde sont une autre erreur de configuration trop courante du serveur Web . Cela se produit généralement lorsque les administrateurs système modifient manuellement les fichiers sur les systèmes de production.
Un exemple courant de fichiers de sauvegarde exposant des informations potentiellement sensibles pourrait être des copies de sauvegarde de fichiers PHP. Parfois, les fichiers PHP contiennent des données de configuration importantes, telles que le fichier wp-config.php de WordPress.
Prenez le scénario suivant — un administrateur WordPress doit apporter des modifications au fichier wp-config.php. Au lieu de suivre les meilleures pratiques et de conserver une copie du fichier ailleurs que sur le serveur Web, ils font une copie du wp-config.php en direct, en nommant la sauvegarde wp-config.php.bak. Supposons maintenant que l'administrateur système ait oublié de supprimer ce fichier, ce qui arrive plus souvent qu'on ne le pense.
Un attaquant peut désormais lire le fichier en demandant simplement http://www.example.com/wp-config.php.bak . L'attaquant peut lire le fichier car son extension n'est plus .php. Ainsi, le moteur PHP l'ignore et le serveur Web le sert comme un fichier texte. Désormais, l'attaquant connaît les informations d'identification de la base de données WordPress, les jetons secrets et toute autre information de configuration sensible que vous avez enregistrée dans ce fichier.
Fichiers temporaires
Comme pour les fichiers de sauvegarde, les fichiers temporaires au mauvais emplacement peuvent exposer des données potentiellement sensibles. Prenant wp-config.php comme exemple une fois de plus. Si un administrateur système devait modifier ce fichier à l'aide d'un éditeur de texte et que, pour une raison quelconque, le programme ne se terminait pas proprement, il y a de fortes chances que l'éditeur laisse des fichiers temporaires. Par exemple, l'éditeur de ligne de commande populaire Vim stocke les fichiers de sauvegarde avec l'extension de fichier *.ext~ avec un fichier *.ext.swp. Les fichiers swp sont utilisés comme fichier de verrouillage. Ils contiennent également tout l'historique des annulations/rétablissements et d'autres informations internes dont Vim a besoin.
Par conséquent, en cas de plantage, Vim laisse derrière lui un fichier wp-config.php.ext~ qui peut être accessible en texte brut comme les fichiers de sauvegarde car il ne se termine pas par une extension de fichier *.php. Les fichiers temporaires de ce type ne sont pas exclusifs à Vim - Emacs (un autre éditeur de texte en ligne de commande populaire) enregistre également des fichiers temporaires similaires, et d'innombrables autres outils le font également.
Attention : utilisez un plug-in de surveillance de l'intégrité des fichiers pour votre site Web afin d'être alerté de toutes les modifications de fichiers, y compris les fichiers temporaires et de sauvegarde. Si vous n'êtes pas familier avec cette technologie, lisez notre introduction à la surveillance de l'intégrité des fichiers pour WordPress.
MySQL exposé
De loin, l'une des erreurs de configuration les plus graves qu'un administrateur système peut faire est de laisser son serveur de base de données WordPress MySQL ouvert sur Internet. Pourquoi cela peut sembler fou, cela arrive probablement plus que vous ne le pensez. Ci-dessous, une capture d'écran de Shodan, un moteur de recherche pour les appareils connectés à Internet.
Bien sûr, ce n'est pas parce que MySQL est exposé sur Internet que quelqu'un peut s'y connecter et accéder à la base de données WordPress. Cependant, surtout s'il est utilisé en combinaison avec d'autres attaques, comme une fuite de mot de passe via une sauvegarde de wp-config.php, ou de deviner un mot de passe faible, cela pourrait conduire à un scénario catastrophe.
Une fois aux commandes d'une base de données WordPress, c'est fini pour une installation WordPress. Tout ce qu'un attaquant doit faire est de réinitialiser un mot de passe administrateur. Ensuite, ils prennent à peu près le contrôle total de votre site Web WordPress, et potentiellement même du serveur sur lequel il s'exécute en installant délibérément des plugins malveillants.
Exécuter des services inutiles
Un autre problème courant de mauvaise configuration du serveur Web est la configuration par défaut. De nombreux administrateurs exécutent la configuration par défaut et ne désactivent pas les services dont ils n'ont pas besoin. Dans la plupart des cas, les installations par défaut comportent de nombreux services inutiles en cours d'exécution, dont la plupart, s'ils ne sont pas sécurisés, exposent le serveur Web à des attaques.
Outils de pentesting pour les testeurs d'intrusion WordPress et les professionnels de la sécurité
Les testeurs d'intrusion utilisent une variété d'outils pour automatiser leur travail et leurs techniques. L'automatisation permet de réduire le temps nécessaire pour effectuer une évaluation de la sécurité / un test de pénétration.
Kali Linux
Les outils que l'on utilise varient considérablement. Cela dépend des préférences personnelles et du problème à résoudre. Cependant, un bon point de départ est d'avoir une variété d'outils à votre disposition, préinstallés.
Kali Linux, anciennement connu sous le nom de BackTrack, est la distribution Linux de test de pénétration open source. Kali Linux est livré avec une multitude d'outils préinstallés et préconfigurés. Il est utile à la fois aux utilisateurs novices qui cherchent à démarrer rapidement, ainsi qu'aux testeurs d'intrusion expérimentés. Kali Linux est disponible gratuitement et peut fonctionner sur une machine virtuelle.
NmapName
Ce scanner gratuit est l'un des scanners les plus fondamentaux et les plus polyvalents de l'arsenal de tout pentester. Nmap est avant tout un scanner de ports. Cependant, il peut être étendu pour effectuer toutes sortes d'analyses différentes via son langage de script NSE.
WPScan
WPScan (abordé plus haut dans cet article) est un scanner de sécurité WordPress open source. Il recherche les vulnérabilités connues de WordPress – à la fois dans le noyau WordPress, ainsi que dans les plugins et thèmes WordPress.
WPScan peut effectuer une série de tests de boîte noire. C'est-à-dire sans accès au code source. En conséquence, WPScan est idéal pour trouver rapidement et avec précision les vulnérabilités WordPress à portée de main.
ZAP OWASP
OWASP Zed Attack Proxy (ZAP) est un outil de test de pénétration d'applications Web gratuit et open source. L'Open Web Application Security Project (OWASP) maintient ces outils. OWASP ZAP est conçu spécifiquement pour tester les applications Web pour une grande variété de vulnérabilités telles que le script intersite (XSS) et l'injection SQL (SQLi). ZAP, à la base, est un proxy. Il se situe entre le navigateur du pentester et le site Web pour intercepter et inspecter les requêtes envoyées entre les deux.
En plus d'agir comme un proxy, ZAP peut également tester automatiquement une variété de vulnérabilités, et il peut également fuzzer une variété d'entrées. Le fuzzing est une technique de test de sécurité dans laquelle une entrée non valide ou inattendue est fournie à une application dans le but de découvrir des vulnérabilités de sécurité.
Tests d'intrusion pour WordPress - évaluer la posture de sécurité de votre site Web
La sécurité de WordPress n'est pas une solution ponctuelle. Il s'agit d'un processus continu basé sur quatre principes : Renforcer > Surveiller > Tester > Améliorer. Avec les tests d'intrusion, vous abordez le principe du test . C'est-à-dire que vous vérifiez la posture de sécurité de votre site Web. Ensuite, vous pouvez prendre les mesures nécessaires pour améliorer la configuration en fonction de vos découvertes.
Par conséquent, les tests de pénétration fréquents du site Web WordPress devraient faire partie de votre programme de sécurité. Vous jugez à quelle fréquence vous devez faire des tests d'intrusion. Si vous apportez des modifications fréquentes à votre site Web, vous devez effectuer des tests fréquents. Cependant, un test de pénétration trimestriel fait l'affaire si votre site Web reçoit rarement une mise à jour.