Énumération des utilisateurs
L'énumération des utilisateurs est la collecte automatisée des identifiants de connexion d'un site, obtenus depuis des adresses publiques qui révèlent le nom des comptes.
Définition
L’énumération des utilisateurs est la collecte automatisée des identifiants de connexion d’un site, obtenus depuis des adresses publiques qui révèlent le nom des comptes. Elle ne suppose aucune intrusion : tout est lu sur des pages que le site sert normalement, souvent sans que personne sache qu’elles existent.
En quoi consiste l’énumération des comptes ?
À faire dire au site le nom de ceux qui écrivent dessus.
Une connexion WordPress demande deux choses, un identifiant et un mot de passe. La plupart des sites publient le premier sans le savoir. L’archive d’auteur, appelée sous la forme votresite.fr/?author=1, renvoie vers une page dont l’adresse contient l’identifiant de connexion de l’utilisateur numéro 1. L’API REST de WordPress, interrogée sur /wp-json/wp/v2/users, expose par défaut la liste des comptes ayant publié, avec leur nom d’affichage et leur identifiant. Un programme parcourt les numéros de 1 à 10 et repart avec la liste.
Le guide de test de l’OWASP range l’énumération dans la gestion des identités, sous le nom de test d’énumération de comptes utilisateurs. Son principe est général et dépasse WordPress : dès qu’une application répond différemment selon qu’un compte existe ou non, elle renseigne l’attaquant. Un message de connexion qui distingue l’identifiant inconnu du mot de passe erroné suffit à trahir la même information.
Pourquoi un simple nom est un risque
Parce qu’il transforme une devinette en une seule inconnue.
Tant que l’identifiant est ignoré, un robot doit deviner deux valeurs à la fois. Dès qu’il le connaît, il concentre toute sa cadence sur le mot de passe, et l’essai devient rentable. C’est la raison pour laquelle la documentation WordPress demande d’éviter les termes faciles à deviner comme admin ou webmaster au moment de créer un compte administrateur, en précisant qu’ils sont attaqués les premiers.
Le nom sert aussi ailleurs. Il alimente les tentatives d’hameçonnage ciblé, il se recoupe avec les fuites de mots de passe publiées après la compromission d’autres services, et il renseigne sur l’organisation du site : combien de personnes y écrivent, sous quels rôles, et depuis quand. Un compte administrateur inconnu dans cette liste est un signal à traiter comme une compromission à instruire.
Fermer une adresse n’en ferme pas trois. Beaucoup de sites WordPress bloquent l’archive d’auteur et laissent l’API REST ouverte, ou l’inverse. Une variante d’appel suffit alors à contourner la protection : la même liste d’utilisateurs s’obtient par le chemin /wp-json/ ou par le paramètre ?rest_route=, et un filtre qui ne connaît que le premier laisse passer le second. Le contrôle se fait sur chaque voie, en direct, pas dans les réglages d’une extension.
Comment fermer les voies de fuite
Quatre points à contrôler, chacun se vérifie depuis un navigateur.
Neutraliser les archives d’auteur
Sur un site où une seule personne écrit, ces pages n’ont aucune utilité pour le lecteur. Les rediriger ou les faire répondre en page introuvable retire la fuite la plus simple.
Restreindre l’API REST
La liste des utilisateurs doit demander une authentification. Vérifier les deux formes d’appel, /wp-json/wp/v2/users et /?rest_route=/wp/v2/users, pas seulement celle que l’extension de sécurité annonce.
Séparer identifiant et nom affiché
Le nom qui signe les articles ne doit pas être l’identifiant de connexion. WordPress permet de régler les deux séparément, et cette seule manipulation annule l’intérêt de la reconnaissance.
Contrôler les flux automatiques
Flux de syndication, aperçus intégrés et plans de site publient parfois le nom de l’auteur. Ils se testent un par un, une fois les deux premières voies fermées.
Ce que cela donne sur un site réel
Mesure du 5 septembre 2026, sur un mois de journaux d’un site vitrine WordPress d’une trentaine de pages. Du 31 juillet au 31 août, 476 requêtes ont cherché à lister les comptes, venues de 155 machines différentes, présentes 27 jours sur 31. Le site a tenu : 213 refus d’authentification, 189 pages introuvables, 58 redirections et 14 interdictions. Deux réponses en 200 seulement, le 12 août, à deux secondes d’intervalle et depuis deux robots de la même société d’analyse, pour un corps de 40 kilooctets, la taille d’une page du site et non celle d’une liste de comptes. Le même appel répond aujourd’hui par un refus de 108 octets : impossible d’en conclure une fuite, seulement que la réponse n’était pas celle attendue ce jour-là. La vraie leçon est ailleurs, dans le coût du refus. Les 213 refus rendus par l’interface de programmation pèsent 106 octets en moyenne. Les 189 pages introuvables rendues par le site en pèsent 77 897, soit 735 fois plus, et 14,7 mégaoctets sur le mois. Refuser proprement coûte moins cher que refuser poliment.
Questions fréquentes
Mon identifiant est-il visible en ce moment ?
Cela se vérifie en quelques secondes depuis un navigateur, en appelant votresite.fr/?author=1 puis votresite.fr/wp-json/wp/v2/users. Si l’une des deux adresses répond en affichant un nom, l’identifiant de connexion est public.
Changer d’identifiant suffit-il ?
Non, mais c’est utile. Un identifiant qui ne ressemble pas au nom affiché rend la reconnaissance inutile. La protection du compte repose ensuite sur un mot de passe long et unique et sur la double authentification.
Faut-il désactiver toute l’API REST de WordPress ?
Rarement, elle sert à l’éditeur de blocs et à des extensions légitimes. Ce qui se restreint, c’est l’accès anonyme à la liste des utilisateurs, pas l’interface entière.
Ces tentatives signifient-elles que mon site est visé ?
Non. Elles sont massives et automatiques, un site neuf en reçoit dès sa mise en ligne. Ce qui compte n’est pas leur nombre, c’est ce que le site leur répond.
Sources
Et sur votre site ?
Une définition ne dit pas si vous êtes concerné.
L'audit gratuit répond dans votre cas : état technique, temps de chargement, et ce que Google voit réellement de vos pages. Un constat écrit, sans engagement et sans jargon.