A enumeração de usuários em WordPress não é apenas sobre "descobrir nomes"; é o primeiro passo crítico para ataques de força bruta direcionados e credential stuffing. Como Pentesters, exploramos comportamentos nativos que muitas vezes passam despercebidos por SysAdmins.
Abaixo, resumo algumas das técnicas que utilizo em minhas campanhas:
1. Redirecionamento por Author ID (O clássico 301) O WordPress, por padrão, tenta resolver IDs de autores para seus respectivos slugs.
Ação: Acessar https[:]//target[.]com/?author=n
Resultado: O servidor frequentemente retorna um redirecionamento (301) para https[:]//target[.]com/author/username/, revelando o login.
2. Abuso da REST API Muitos WAFs bloqueiam o endpoint padrão, mas esquecem de normalizar parâmetros de query.
Bypass de restrição simples: Em Bash
# Se /wp-json/ estiver bloqueado: curl -s https[:]//target[.]com/?rest_route=/wp/v2/users | jq '.[] | {id, name, slug}'


3. Enumeração Indireta via Posts e Mídia Se o endpoint de usuários estiver sanitizado, podemos extrair IDs através do conteúdo publicado:
Posts: https[:]//target[.]com/wp-json/wp/v2/posts(Procure pelo campo "author": ID)

Mídia: https[:]//target[.]com/wp-json/wp/v2/media (Frequentemente negligenciado e expõe autores de uploads)

Uma vez identificado o ID (ex: 1), basta consultar o objeto específico: https[:]//target[.]com/?rest_route=/wp/v2/users/1

Tabela de Referência Rápida: Endpoint Objetivo /wp-json/wp/v2/users => Enumeração direta /wp-json/wp/v2/posts => Identificar IDs via autoria de posts /wp-json/wp/v2/media => Metadados e IDs via arquivos /wp-json/wp/v2/pages => Estrutura e autoria de páginas
Dica de mitigação: Não basta desativar o /wp-json/. É necessário restringir o acesso a esses endpoints para usuários não autenticados e desabilitar a resolução de author archives no functions.php.