NIS2 & DORA en vigueur. EU AI Act arrive — réservez une démo

Test d'intrusion WordPress : Plugins, REST API et Sécurité des Thèmes

WordPress propulse plus de 43 % de l'ensemble des sites web sur Internet, ce qui en fait la plateforme CMS la plus ciblée au monde par les attaquants. L'architecture extensible de WordPress — des milliers de plugins et thèmes tiers maintenus par des développeurs aux capacités de sécurité variables — crée une surface d'attaque permanente que les mises à jour automatiques du core ne couvrent pas. CVE-2023-5561 a démontré que la REST API WordPress divulguait les noms d'utilisateur réels malgré les tentatives de protection. CVE-2024-1827 dans le plugin Elementor (utilisé par des millions de sites) a exposé une vulnérabilité d'injection de contenu permettant l'exécution de code arbitraire. Matproof examine votre installation WordPress de manière exhaustive, du core aux plugins en passant par la configuration du serveur.

Démarrer le pentest WordPress
MW
Rédigé par Malte Wagenbach
Fondateur de Matproof Security. Spécialisé dans les tests d'intrusion pilotés par IA et la conformité UE (DORA, NIS2, ANSSI RGS, ISO 27001).
Dernière révision : 17 mai 2026

Pourquoi WordPress nécessite des tests de sécurité réguliers et spécialisés

La popularité de WordPress est à double tranchant en matière de sécurité : elle attire un volume massif de recherches de vulnérabilités, d'exploits automatisés et de botnets spécialisés qui scannent en permanence l'Internet à la recherche de versions vulnérables. Le modèle de plugins WordPress est fondamentalement différent d'un framework monolithique : chaque plugin ajoute du code tiers dans le même espace d'exécution PHP, avec les mêmes accès à la base de données et au système de fichiers. Un seul plugin abandonné ou mal codé parmi des dizaines d'extensions actives peut compromettre l'ensemble du site. Les statistiques WPScan montrent que plus de 97 % des vulnérabilités WordPress identifiées proviennent de plugins ou thèmes tiers, pas du core WordPress lui-même.

  • CVE-2023-5561 (énumération des utilisateurs via la REST API WordPress) : malgré les paramètres de configuration censés masquer les noms d'utilisateur, l'API REST WordPress exposait les usernames réels via les endpoints /wp-json/wp/v2/users. Ces informations permettent des attaques par force brute ciblées et sont régulièrement exploitées en combinaison avec des dumps de mots de passe pour des attaques de credential stuffing.
  • CVE-2024-1827 (Elementor Page Builder — XSS stocké et injection de contenu) : Elementor est l'un des plugins WordPress les plus installés au monde avec plus de 10 millions d'activations actives. Cette CVE permettait à des utilisateurs authentifiés de bas niveau (Subscriber, Contributor) d'injecter du contenu HTML arbitraire incluant des scripts, conduisant à des attaques XSS stockées affectant tous les visiteurs des pages concernées.
  • CVE-2023-1862 (vulnérabilité dans un plugin WordPress populaire) : illustre la catégorie des vulnérabilités d'autorisation manquante dans les plugins WordPress, permettant à des utilisateurs non authentifiés d'accéder à des fonctionnalités ou données réservées aux administrateurs. Cette classe de vulnérabilités est la plus répandue dans l'écosystème WordPress selon les rapports WPScan annuels.
  • Injection SQL dans les plugins non sécurisés : de nombreux plugins WordPress construisent des requêtes SQL personnalisées sans utiliser l'API $wpdb->prepare() correctement, ouvrant des vecteurs d'injection SQL non authentifiés ou peu authentifiés. Ces vulnérabilités sont régulièrement exploitées dans les campagnes d'injection automatisées.
  • Téléchargement de fichiers non sécurisé et exécution de code : les plugins gérant des uploads (formulaires de contact, galeries, e-commerce) peuvent permettre l'upload de fichiers PHP disguisés, conduisant à des webshells. La configuration du serveur (Nginx/Apache) doit bloquer l'exécution PHP dans les répertoires d'upload.
  • Exposition des fichiers wp-config.php, .htaccess et readme.html : les fichiers de configuration mal protégés, le fichier readme.html révélant la version exacte de WordPress et l'accès direct aux fichiers système constituent des vecteurs de reconnaissance importants pour un attaquant.
  • Authentification XML-RPC et attaques par force brute amplifiées : l'interface XML-RPC (/xmlrpc.php) permet des attaques de type « multicall » envoyant des centaines de tentatives d'authentification dans une seule requête HTTP, contournant les mécanismes de rate-limiting basiques et amplifiant considérablement les attaques par force brute.

Ce qui est examiné lors d'un test d'intrusion WordPress

  • Énumération des utilisateurs et protection des identifiants : test via la REST API (/wp-json/wp/v2/users), l'auteur de publication (?author=N), la page de connexion wp-login.php et XML-RPC ; vérification de l'efficacité des protections en place.
  • Audit des plugins et thèmes installés : inventaire complet de tous les plugins et thèmes actifs et inactifs, comparaison avec WPScan Database et NVD, identification des extensions abandonnées, non maintenues ou avec des CVE connus dans la version installée.
  • Sécurité de la page de connexion et protection contre la force brute : test des mécanismes de rate-limiting et de lockout sur wp-login.php et XML-RPC, test des politiques de mots de passe, vérification de l'implémentation de l'authentification à deux facteurs (2FA).
  • Contrôles d'accès et gestion des rôles : test des permissions pour chaque rôle WordPress (Subscriber, Contributor, Author, Editor, Administrator), vérification des plugins d'authentification pour les escalades de privilèges, test IDOR sur les endpoints REST API.
  • Sécurité de la REST API WordPress : test de l'authentification des endpoints protégés, de la divulgation d'informations via les routes publiques, de la validation et sanitisation des entrées dans les endpoints personnalisés, de l'exposition des métadonnées.
  • Injection SQL et XSS dans les plugins et thèmes : test automatisé et manuel des paramètres de requête, champs de formulaire et entrées d'administration pour les injections SQL et XSS (réfléchi, stocké, DOM-based) dans tous les plugins actifs.
  • Configuration du serveur web et protection des fichiers sensibles : vérification de l'accès direct à wp-config.php, .htaccess, readme.html, debug.log, xmlrpc.php, wp-cron.php ; audit des permissions de fichiers/répertoires ; test des en-têtes HTTP de sécurité.
  • Upload de fichiers et prévention d'exécution de code : test des restrictions de types de fichiers dans les plugins d'upload, vérification que les répertoires wp-content/uploads/ bloquent l'exécution PHP, test du path traversal dans les gestionnaires de médias.
  • Sécurité de l'accès wp-admin : accès sans authentification aux pages d'administration, protection des endpoints AJAX admin-ajax.php, vérification des nonces WordPress pour les actions sensibles.
  • Audit de sécurité de la base de données WordPress : préfixe de table personnalisé (pas wp_), injection via les options WordPress (wp_options), test des hooks et filtres pouvant être détournés par des plugins malveillants.

Exemple de finding

Élevé

Énumération des noms d'utilisateur WordPress via la REST API (CVE-2023-5561)

La REST API WordPress expose les noms d'utilisateur de tous les auteurs via l'endpoint /wp-json/wp/v2/users sans authentification requise. En effectuant une requête GET sur cet endpoint, tous les comptes ayant publié du contenu ont été énumérés, révélant 7 noms d'utilisateur incluant « admin-malte » (administrateur principal). Ces identifiants, combinés à une attaque de credential stuffing utilisant des données de brèches publiques (HaveIBeenPwned), permettent des tentatives d'authentification ciblées. La page wp-login.php ne présentait aucun mécanisme de rate-limiting ou CAPTCHA pour limiter les tentatives automatisées.

Correction : Désactiver l'énumération des utilisateurs via la REST API avec un plugin de sécurité (Wordfence, iThemes Security) ou du code personnalisé filtrant les requêtes à /wp-json/wp/v2/users. Implémenter un plugin anti-force-brute (Limit Login Attempts Reloaded) avec blocage IP après 5 échecs. Renommer le compte admin (jamais « admin » comme identifiant). Activer l'authentification à deux facteurs (2FA) pour tous les comptes administrateur. Envisager de désactiver XML-RPC si non nécessaire. Référence : CVE-2023-5561, OWASP A07:2021 Identification and Authentication Failures.

Référence : CVE-2023-5561 · OWASP A07:2021 Identification and Authentication Failures · CWE-200 Exposure of Sensitive Information · WPScan CVE Database

Pentest WordPress : comparaison des options

Scan gratuitMatproof SentinelConsultance classique
Moteur de scan automatisé✓ (aperçu 3 min)✓ Scan complet✗ Manuel uniquement
Couverture OWASP Top 10Partielle✓ Complète✓ Complète
Preuve d'exploitation✓ Par finding✓ Par finding
Mapping réglementaire (DORA/NIS2/ISO 27001)✓ Automatisé✓ Manuel
Rapport PDF prêt pour l'audit✓ Instantané✓ Livraison 2–4 semaines
Scans continus / récurrents✓ Par déploiement✗ Engagement annuel
Délai avant premier résultat~3 min~30 min scan complet2–4 semaines
Prix€0À partir de €149€8 000–€25 000
Revue de code source (SAST)✓ Plan Growth✓ Périmètre défini
Tests API (REST/GraphQL)✓ Automatisé✓ Manuel

Offres de pentest WordPress

Scan unique
€149 paiement unique
  • 1 scan pentest complet
  • Résultats priorisés par IA avec CVSS 3.1
  • Proof-of-exploit pour chaque finding
  • Rapport PDF (prêt pour l'audit)
  • Mapping réglementaire (DORA, NIS2, ISO 27001)
Acheter le scan unique
Recommandé
Starter
€299 / mois
  • Scans illimités (jusqu'à 3 domaines)
  • Surveillance continue
  • Intégration CI/CD (GitHub, GitLab)
  • Tous les mappings réglementaires
  • Support prioritaire
Démarrer Starter
Growth
€799 / mois
  • Scans + domaines illimités
  • Tests authentifiés / White-Box
  • Tests d'API et d'infrastructure cloud
  • Account manager sécurité dédié
  • SLA réponse 24h
Contacter pour Growth

Questions fréquentes sur le test d'intrusion WordPress

WordPress core est-il sécurisé en 2024-2025 ou les risques viennent-ils principalement des plugins ?

WordPress core maintenu à jour est généralement bien sécurisé — l'équipe de sécurité WordPress publie des correctifs rapidement et les mises à jour automatiques du core réduisent l'exposition. Selon les données WPScan, plus de 97 % des vulnérabilités WordPress identifiées proviennent de plugins et thèmes tiers. Les risques majeurs sont : plugins abandonnés non mis à jour, thèmes premium piratés contenant du code malveillant, plugins populaires avec vulnérabilités zero-day (comme Elementor, WooCommerce, Contact Form 7) et configurations serveur incorrectes.

Comment CVE-2023-5561 permet-il concrètement l'énumération des utilisateurs WordPress ?

La REST API WordPress expose par défaut l'endpoint GET /wp-json/wp/v2/users qui retourne un JSON contenant les noms d'utilisateur (slug), les noms d'affichage et les URLs de profil de tous les auteurs ayant publié du contenu. Même si la protection 'list_users' est configurée, certaines versions contournables via cette CVE exposaient ces données. Un attaquant utilise ensuite ces usernames dans des attaques de credential stuffing (via des dumps de mots de passe de brèches antérieures sur haveibeenpwned.com) ou des attaques par dictionnaire ciblées sur wp-login.php.

Quels plugins WordPress présentent le plus de risques de sécurité et comment les évaluer ?

Les plugins à risque élevé sont : (1) les plugins abandonnés (dernière mise à jour > 2 ans, pas de compatibilité WordPress récente), (2) les plugins avec de nombreux utilisateurs mais peu de mises à jour de sécurité, (3) les plugins gérant des uploads, paiements ou authentification. Pour évaluer : consulter le changelog pour les mentions de correctifs de sécurité, vérifier les CVE connus sur wpscan.com/plugins, utiliser un plugin de sécurité (Wordfence, Solid Security) avec une base de données de vulnérabilités à jour. Matproof compare automatiquement vos plugins installés contre la base WPScan et NVD.

Faut-il désactiver XML-RPC dans WordPress et quels sont les risques ?

XML-RPC (/xmlrpc.php) est une interface héritée permettant la publication distante (Jetpack, apps mobiles WordPress). Son risque principal est les attaques par force brute amplifiées : la méthode system.multicall permet d'envoyer des centaines de tentatives d'authentification dans une seule requête HTTP, contournant les protections de rate-limiting standard. Si vous n'utilisez pas Jetpack ou une application mobile WordPress, désactivez XML-RPC entièrement. Si vous en avez besoin, restreignez l'accès par IP allowlist au niveau du serveur web.

Comment sécuriser wp-login.php contre les attaques automatisées ?

Mesures recommandées par ordre d'efficacité : (1) authentification à deux facteurs (2FA) obligatoire pour tous les administrateurs — élimine l'intérêt des attaques de credential stuffing ; (2) plugin de rate-limiting avec blocage IP (Limit Login Attempts Reloaded : max 5 tentatives avant blocage 24h) ; (3) protection par IP allowlist pour wp-admin si possible (accès depuis des IPs fixes uniquement) ; (4) changement de l'URL de connexion avec un plugin comme WPS Hide Login — ralentit les bots automatisés ; (5) désactivation du mode debug et suppression du readme.html pour masquer la version WordPress.

Le scan gratuit WPScan suffit-il ou faut-il un pentest professionnel ?

WPScan est excellent pour l'identification des versions de plugins et la comparaison avec une base de données de CVE connus — c'est un outil de reconnaissance précieux. Ses limites : il ne peut pas tester les vulnérabilités logiques spécifiques à votre configuration, les failles dans le code personnalisé de vos thèmes, les problèmes de contrôle d'accès dans votre implémentation ou les vulnérabilités qui nécessitent une authentification pour être exploitées. Un pentest professionnel combine les résultats WPScan avec des tests manuels, de l'exploitation et une analyse des vecteurs d'attaque chaînés — c'est ce que fournit Matproof Sentinel.

Comment WooCommerce affecte-t-il la sécurité d'un site WordPress ?

WooCommerce (installé sur plus de 7 millions de sites) élargit considérablement la surface d'attaque WordPress : données de carte de paiement (PCI DSS compliance requise), informations personnelles des clients (RGPD), logique de prix et de remises (manipulation de panier), API REST WooCommerce avec authentification par clé, et processus de commande/livraison. Les vulnérabilités WooCommerce courantes incluent : contournement des contrôles de prix via manipulation des paramètres de panier, IDOR sur les endpoints de commande /wp-json/wc/v3/orders/{id}, et exposition des données clients via des exports non sécurisés.

Quelle est la fréquence recommandée pour un pentest WordPress ?

Pour un site WordPress en production gérant des données utilisateurs ou des transactions : pentest complet annuel, plus des tests ciblés après l'ajout de nouveaux plugins majeurs ou après un incident. La surveillance continue via Matproof Sentinel est particulièrement précieuse pour WordPress car de nouvelles CVE de plugins sont publiées quotidiennement — une mise à jour automatique de plugin peut introduire une régression de sécurité ou, si le plugin est compromis (supply chain), du code malveillant directement en production.

Sujets connexes

Approfondir — articles de blog associés

Démarrez votre test d'intrusion WordPress maintenant

Vérifiez en quelques minutes si vos plugins WordPress contiennent des CVE connus, si votre configuration expose des informations sensibles ou si votre site est vulnérable à l'énumération d'utilisateurs. Rapport audit-ready en français, aucune installation requise.

Démarrer le pentest WordPress