Utilisateurs administrateurs fantômes : le signal le plus fiable
Un compte administrateur que vous ne reconnaissez pas vaut mieux qu'un fichier isolé : quelqu'un peut revenir sans nouvel exploit. On le note, on le supprime, puis on change son propre mot de passe — dans cet ordre, et pas l'inverse.
Un compte admin que vous ne reconnaissez pas vaut mieux qu'un fichier isolé : quelqu'un peut revenir sans exploit. Supprimez, puis changez votre propre mot de passe.
Pourquoi c'est le signal le plus fiable
Un `radio.php` à la racine peut être un reste. Un second administrateur nommé `wp_support`, `adminbackup` ou un prénom que personne dans l'équipe ne porte, c'est une session possible aujourd'hui. Tant qu'il existe, le nettoyage des fichiers est provisoire : il réécrit ce que vous retirez.
Dans les dossiers que nous reprenons, ce compte est souvent là depuis des semaines. Le site « marchait ». Personne n'ouvre Utilisateurs. Le jour où Chrome parle de site trompeur, l'admin fantôme est déjà le plan B de l'attaquant.
Traitez-le comme une urgence d'accès, pas comme une curiosité. Même si le site s'affiche normalement. Un admin inactif n'est pas un admin inoffensif.
Lister vraiment tous les privilégiés
Administrateur, mais aussi Éditeur s'il peut publier, Shop manager sur WooCommerce, Super Admin sur un multisite. Un rôle custom nommé « Support » avec `manage_options` est un admin. Les plugins de membres inventent des rôles : ouvrez-les.
En SQL : table `wp_usermeta`, clé `wp_capabilities` (préfixe à adapter). Toute ligne qui contient `administrator` ou `manage_options` sort. C'est plus fiable que l'écran quand un mu-plugin masque des utilisateurs.
Notez aussi les comptes de l'hébergeur : utilisateurs FTP, comptes cPanel, clés SSH. Un admin WordPress propre avec un FTP encore partagé, c'est le même dossier dans quarante-huit heures. L'ordre des mots de passe reste panel d'abord, CMS ensuite.
Noter avant de supprimer
Capturez la fiche : identifiant, e-mail, ID, date. Cette capture sert à l'assureur, à l'hébergeur, parfois à une plainte. Supprimer d'abord, se souvenir ensuite, c'est perdre la seule preuve d'un accès humain.
Ne réassignez pas ses articles à votre compte « pour faire propre » avant d'avoir listé ces articles. Les billets qu'il a publiés sont le reste de l'attaque. L'écran de suppression WordPress propose de tout attribuer à un autre utilisateur : refusez tant que vous n'avez pas exporté.
Si vous n'êtes pas sûr qu'un compte soit fantôme — homonyme, prestataire de 2022 — désactivez-le ou passez-le en Abonné le temps de vérifier. Supprimer un vrai collègue un vendredi soir crée un autre incident.
Après la suppression : votre mot de passe, pas seulement le sien
Si quelqu'un a créé un admin, il a pu lire le vôtre, ou poser une backdoor qui le réécrit. Supprimer le fantôme et garder `Saison2023!` sur votre compte, c'est lui offrir le siège suivant. Changez le vôtre tout de suite, depuis un réseau que vous contrôlez, pas depuis un Wi-Fi d'hôtel sur une session déjà ouverte.
Ordre : panel d'hébergement, FTP/SFTP, admin CMS, base, SMTP. Un mot de passe WordPress changé pendant que le panel o2switch est encore l'ancien est un théâtre : l'attaquant recrée l'utilisateur via `wp-config`.
Si vous réutilisez le même secret sur la messagerie du domaine, partez du principe qu'elle a été lue. Trois secrets distincts, gestionnaire de mots de passe, pas un e-mail à l'agence avec le nouveau mot de passe en clair.
- Panel hébergeur et sous-comptes FTP.
- Votre admin CMS + tous les autres privilégiés légitimes.
- Mots de passe d'application WordPress.
- Clés SMTP, Stripe, Search Console inconnues.
Sessions, clés d'application, e-mails de l'utilisateur
WordPress 5.6+ a des mots de passe d'application. Ils survivent au changement du mot de passe principal. Écran Profil → Mots de passe d'application : révoquez tout ce que vous ne nommez pas. Un jeton « VS Code » que personne n'utilise est une porte.
Invalidez les sessions : un plugin de sécurité le fait, ou un changement des clés `AUTH_KEY` dans `wp-config.php` (toutes les lignes `*_KEY` et `*_SALT`). Ça déconnecte tout le monde, y compris vous. C'est le but.
L'e-mail du fantôme a pu servir à une réinitialisation. Si cet e-mail est une boîte de votre domaine, ouvrez-la : règles de transfert, accès IMAP. Un admin WordPress plus une règle « transférer tout vers Gmail » est un couple fréquent.
Par où ce compte est arrivé
Trois chemins dominent. Un plugin ou un thème vulnérable qui permet de créer un utilisateur. Un mot de passe admin faible ou réutilisé. Un voisin de compte d'hébergement qui a écrit dans votre base. Les journaux `access.log` autour de `wp-login.php` et `wp-json/wp/v2/users` tranchent souvent.
Regardez aussi l'installation : wizard Duplicator resté en ligne, `install.php`, un File Manager. Créer un admin depuis ces outils ne laisse pas toujours une ligne « nouvel utilisateur » propre dans l'interface — mais `user_registered` est là.
Fermer le compte sans fermer l'entrée, c'est le voir réapparaître. Cherchez le plugin vulnérable, le XML-RPC, le fichier à la racine. Le fantôme est le symptôme le plus parlant ; il n'est pas l'entrée.
Vérifier qu'il ne se recrée pas
Revenez dans Utilisateurs le lendemain, puis à J+7. Une nouvelle ligne `admin1` est plus parlante qu'un scan. En base, surveillez le `MAX(ID)` de `wp_users` : s'il augmente sans inscription légitime, quelqu'un écrit encore.
Un cron qui insère un utilisateur est rare mais réel. Plus souvent, un webshell reste. Les deux se cherchent dans le même passage : crontab, mu-plugins, PHP à la racine.
Si Search Console ou Chrome affiche encore une alerte, ce n'est pas ce compte qui la lève. Nettoyez le contenu frauduleux, puis déposez le réexamen. Un admin fantôme retiré sur un site encore sale laisse Safe Browsing en place 24 à 72 h après le vrai nettoyage — pas après la suppression du user.
Boutique et rôles « presque admin »
WooCommerce : Shop manager voit les commandes et les réglages. PrestaShop : un employé avec « Admin » ou un profil recopié. Magento : un rôle ACL trop large. Ces comptes ne s'appellent pas administrateur dans l'UI ; ils suffisent à poser un module ou à exporter des clients.
Sur une boutique, croisez avec les commandes fantômes et les comptes clients créés en masse. Un employé fantôme plus des commandes à 0 €, c'est souvent le même passage.
Vous pouvez déclarer le dossier si la liste des rôles custom vous dépasse. En attendant : capture des fiches, suppression des comptes que vous pouvez nommer comme étrangers, changement du panel. Ces trois gestes tiennent une soirée.
- Shop manager, éditeur, super admin, rôles custom.
- Employés PrestaShop et clés webservice.
- Comptes FTP du même incident.
Comment un admin se cache dans la liste
Le `user_login` n'est pas toujours ce que vous lisez. WordPress affiche le `display_name`. Un compte `x7k2` peut s'appeler « Julie » à l'écran. Ouvrez chaque fiche : identifiant, e-mail, rôle, date d'inscription si un plugin la montre.
L'e-mail est souvent un jetable (`guerrillamail`, `tempmail`) ou une variante de votre domaine (`admin@votre-domaine.fr` alors que vous utilisez Gmail). Un e-mail « qui ressemble » au vôtre n'est pas le vôtre. Comparez caractère par caractère.
Sur les gros sites, la pagination cache la ligne. Triez par rôle, puis par date. Un utilisateur créé à 3 h 12 un dimanche n'est pas un client. Si la colonne date n'existe pas, passez par `wp_users` : `user_registered`.