Unauthenticated Recon
Version fingerprinting, user enumeration, plugin/theme discovery. No credentials needed, mostly passive against the app itself.
Authenticated Exploitation
Once you have any valid login (even a low-privilege one), the theme editor and plugin upload both turn straight into code execution.
WPScan
WPScan is purpose-built for WordPress and does in one tool what would otherwise take a handful of manual requests, version fingerprinting, plugin/theme enumeration against a vulnerability database, and user enumeration.An API token (free tier available) unlocks WPScan’s full vulnerability database lookups for plugins and themes. Without one, enumeration still works but you won’t get CVE details for what’s found.
Enumerate Options Reference
The-e/--enumerate flag accepts a comma-separated list of what to scan for.
| Option | Description |
|---|---|
vp | Vulnerable plugins |
ap | All plugins (slow) |
p | Popular plugins only |
vt | Vulnerable themes |
at | All themes |
t | Popular themes only |
u | Usernames (ranges supported, e.g. u1-5) |
cb | Config backups (publicly exposed wp-config.php backups) |
dbe | DB exports (exposed .sql dumps) |
tt | Timthumb scripts |
m | Media IDs (ranges supported, e.g. m1-15) |
Manual Enumeration Without WPScan
WP-JSON REST API
WordPress’s built-in REST API leaks user data by default on many installs, worth checking even if WPScan’s user enumeration comes up empty.Interesting Paths
| Path | What’s there |
|---|---|
/wp-content/plugins/ | Installed plugins |
/wp-content/themes/ | Installed themes |
/wp-login.php | Login form |
/wp-admin/ | Admin dashboard (post-login) |
/wp-config.php | DB credentials and auth keys, should never be reachable directly |
/license.txt, /readme.html | Often leak the exact WordPress version |
/xmlrpc.php | Legacy RPC API, see above |
Getting a Webshell (Authenticated)
Once you have admin (or any account with theme-editing rights), the built-in theme editor is the fastest path to code execution, no file upload functionality needed.1
Edit a theme file
In the WordPress admin dashboard, go to Appearance → Theme Editor, pick a rarely-used template (a 404 page is a safe choice since it’s not linked anywhere), and insert a one-line PHP backdoor:
2
Trigger it directly
Request the modified file with your command in the query string:
Quick Reference Tools
Hackviser: WPScan
Reference used for this page.
HackTricks: WordPress
Deeper dive into XML-RPC, SSRF, and DoS angles covered above.
WPScan
The primary WordPress enumeration and vulnerability scanning tool.
WPScan Vulnerability Database
Free API token for full plugin/theme CVE lookups.

