Un compte administrateur que je n’ai pas créé est apparu
C’est le premier geste de presque toutes les intrusions récentes sur WordPress : créer un compte administrateur, parfois masqué de la liste des utilisateurs, pour garder l’accès même après que la faille d’origine a été corrigée.
Pourquoi le compte administrateur est le premier objectif
Dans presque toutes les intrusions WordPress documentées ces derniers mois, le compte administrateur n’est pas le but final : c’est l’outil qui rend le reste possible. Une faille donne un accès étroit, souvent limité à une requête, dans un contexte précis, et elle finit par être corrigée. Un compte administrateur donne un accès large, durable, et parfaitement légitime aux yeux du site. Une fois ce compte créé, l’attaquant n’a plus besoin de la faille d’origine : vous pouvez mettre à jour l’extension fautive, il continue de se connecter par la porte d’entrée normale.
Les cas récents se ressemblent tous sur ce point. Pour la faille critique CVE-2026-3300 dans Everest Forms Pro, corrigée le 18 mars 2026 et exploitée activement à partir du 13 avril 2026, l’indicateur de compromission publié est d’une simplicité inhabituelle : un compte administrateur nommé diksimarina. Pour CVE-2026-8181, qui touchait les versions 3.4.0 et 3.4.1 de Burst Statistics — environ 200 000 installations actives — un attaquant non authentifié pouvait usurper complètement un compte administrateur le temps d’une requête à l’API REST, et s’en servir pour créer ses propres comptes administrateurs. Plus de 7 400 attaques ont été bloquées en vingt-quatre heures avant la publication du correctif 3.4.2, le 12 mai 2026.
La création n’est pas toujours le premier geste. Dans la compromission de la chaîne de distribution de l’éditeur ShapedPlugin, publiée le 22 juin 2026, le code piégé commençait par exfiltrer le contenu de wp-config.php et les comptes administrateurs du site. Ici, le compte n’a pas été créé : il a été lu, avec ce qu’il fallait pour revenir plus tard sans laisser de ligne nouvelle dans la liste.
Ce que vous constatez, ou ce que vous ne voyez pas
- Une ligne inconnue dans la liste des utilisateurs de l’administration, avec le rôle Administrateur.
- Le compteur d’utilisateurs affiche un total supérieur au nombre de lignes réellement visibles.
- Un administrateur dont l’adresse e-mail n’appartient à personne de connu, souvent sur un domaine générique.
- Une date d’inscription qui ne correspond à l’arrivée de personne dans l’équipe.
- Un compte existant dont le rôle est passé à administrateur sans que personne ne l’ait demandé.
- Une notification WordPress annonçant une création de compte ou un changement d’adresse e-mail que personne n’a déclenché.
- Un compte supprimé qui réapparaît quelques heures ou quelques jours plus tard.
Un compte peut exister sans apparaître dans la liste
Le cas le plus désagréable n’est pas celui où vous voyez une ligne inconnue : c’est celui où vous ne voyez rien alors qu’un compte existe. WordPress construit la liste des utilisateurs en passant par ses propres filtres, et une extension malveillante peut se placer sur ces filtres pour retirer une ligne de l’affichage. La campagne d’hameçonnage documentée par Patchstack en avril 2025 faisait exactement cela : l’extension téléchargée par la victime, présentée comme un correctif de sécurité WooCommerce, créait un compte administrateur au nom aléatoire de huit caractères, puis se masquait elle-même de la liste des extensions et masquait le compte qu’elle venait de créer.
Deux vérifications contournent ce masquage sans rien installer. La première : comparer le nombre total d’utilisateurs annoncé en haut de la liste avec le nombre de lignes effectivement affichées, et refaire la comparaison rôle par rôle. Un écart d’une seule unité entre le compteur et l’affichage suffit à justifier la suite. La seconde : lire directement la table wp_users en base de données, via phpMyAdmin ou l’outil de votre hébergeur, en tenant compte du préfixe de tables réellement utilisé sur votre installation. La base ne passe par aucun filtre PHP ; c’est la seule source qui dise la vérité. Regardez aussi wp_usermeta, où sont stockés les rôles : c’est là qu’un compte discret peut se voir attribuer les droits d’administrateur.
La même remarque vaut pour la ligne de commande. WP-CLI charge WordPress, donc les extensions, donc les filtres : une extension qui masque un compte dans l’administration peut aussi le masquer dans la sortie de WP-CLI. La commande ci-dessous reste la façon la plus rapide de sortir une liste propre avec les dates d’inscription, mais si elle ne montre rien et que le compteur indique un utilisateur de plus, croyez le compteur, puis allez voir en base.
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered
wp user list --role=administrator --format=count
Ce qu’il faut relever avant de toucher au compte
-
Noter la date et l’heure d’inscription
Le champ <code>user_registered</code> donne le moment exact où le compte a été créé. C’est le point de pivot de toute la suite de l’analyse : sans lui, je ne sais pas dans quelle période chercher.
-
Noter l’identifiant, l’adresse e-mail et le rôle
Je conserve ces informations en dehors du site, dans un fichier ou une note. Une fois le compte supprimé, elles ne sont plus récupérables, et ce sont elles qui permettent de reconnaître le même acteur ailleurs.
-
Récupérer les journaux avant qu’ils tournent
Les journaux d’accès de l’hébergeur sont souvent conservés quelques jours seulement. Je les télécharge pour la journée d’inscription et les deux jours qui précèdent, avec les journaux d’erreurs PHP de la même période.
-
Chercher ce qui a bougé au même moment
Fichiers modifiés ou créés autour de cette date, tâches planifiées inhabituelles, extensions installées ou désactivées, contenus publiés. C’est en général là que se trouve le point d’entrée, pas dans le compte lui-même.
-
Vérifier les autres comptes, pas seulement le nouveau
Rôle passé à administrateur sur un compte ancien, adresse e-mail modifiée, clé d’application ajoutée : la ligne visible est parfois un leurre destiné à être trouvée et supprimée pendant qu’un second accès reste en place.
-
Puis seulement : supprimer, réinitialiser, déconnecter
Suppression du compte, réinitialisation des mots de passe de tous les administrateurs, invalidation des sessions ouvertes, régénération des clés de sécurité de <code>wp-config.php</code>.
Pour aller plus loin
-
Vérifier si mon site est compromis
La méthode complète, au-delà de la seule liste des utilisateurs.
-
Fichier inconnu sur le serveur
Ce qu’il faut faire d’un fichier que vous n’avez pas déposé, et comment dater son arrivée.
-
Mots de passe d’administration et accès partagés
Ce qu’il faut réinitialiser une fois le point d’entrée fermé, et dans quel ordre.
Décrivez votre besoin en 1 minute
Quelques questions ciblées pour que je vous réponde avec une estimation, pas avec un questionnaire de plus.