WordPress Enumeration and Common Attack Vectors
WordPress Enumeration and Common Attack Vectors
Because WordPress powers a large share of public websites and relies heavily on third-party plugins and themes, authorized penetration tests routinely include structured WordPress enumeration. Understanding what information a site leaks by default is the first step toward hardening it.
Common Enumeration Surfaces
During authorized assessments, reconnaissance typically inspects predictable WordPress endpoints and paths:
- User Enumeration: Querying
/wp-json/wp/v2/usersvia the REST API or cycling author archives such as/?author=1often exposes valid login usernames. - Authentication Endpoints:
/wp-login.phpand/wp-admin/expose login forms for credential-stuffing or brute-force checks when rate limiting and MFA are absent. - XML-RPC:
/xmlrpc.php, when left enabled for legacy clients, allowssystem.multicallrequests that amplify authentication attempts and SSRF-adjacent pingback abuse. - Plugin and Theme Footprints: Static assets under
/wp-content/plugins/and/wp-content/themes/(includingreadme.txtfiles and version query strings) reveal installed components and patch levels.
Frequent Attack Vectors
- Outdated Plugins and Themes: Most real-world WordPress compromises exploit unpatched third-party extensions (SQL injection, authenticated/unauthenticated file upload, XSS, or LFI) rather than WordPress core.
- Weak Administrative Hygiene: Reused passwords, exposed
adminaccounts, and lack of multi-factor authentication on privileged roles. - Configuration Leaks: Publicly readable backup archives (
wp-config.php.bak,.zipdumps), directory listing on uploads, or overly permissive file permissions.
Defensive Hardening Checklist
- Enforce MFA for all administrator and editor accounts, and avoid predictable usernames.
- Restrict or disable
/xmlrpc.phpunless an active integration explicitly requires it. - Block unauthenticated user enumeration on
/wp-json/wp/v2/usersand author archive redirects where business workflows allow. - Keep WordPress core, plugins, and themes updated, and remove unused extensions completely instead of merely deactivating them.
- Deploy rate limiting and a WAF, enable file integrity monitoring (FIM) on web roots, and maintain tested off-site backups.
This post is licensed under CC BY 4.0 by the author.