What is XML-RPC and why target it?
What is XML-RPC and why target it?
XML-RPC is a remote procedure call protocol that encodes its calls in XML and sends them over HTTP. WordPress exposes an XML-RPC endpoint at
xmlrpc.php to support features such as remote publishing, the WordPress mobile app, and Jetpack integrations.From a security perspective, xmlrpc.php is an attractive target because:- It accepts
wp.getUsersBlogsand similar method calls that validate a username and password on every request. - It is enabled by default on most WordPress installations and is often forgotten by administrators.
- It does not enforce the same brute-force lockout policies that protect the standard
wp-login.phpendpoint in many configurations. - A single HTTP POST can attempt one credential pair, making it straightforward to automate at scale.
Can I use these wordlists on any website?
Can I use these wordlists on any website?
No. You may only use these wordlists against systems you are explicitly authorized to test.Authorized targets include:
- Your own local virtual machines or containers
- CTF challenge machines on platforms such as Hack The Box or TryHackMe
- Lab environments set up by an instructor who has granted written permission
- Systems named in a signed penetration testing scope-of-work document
What is the difference between WPScan and Hydra for this task?
What is the difference between WPScan and Hydra for this task?
Both tools can perform credential brute-force attacks against WordPress XML-RPC, but they differ in design and behavior:
WPScan is the preferred tool for WordPress lab exercises because it understands the application and handles the XML-RPC protocol details for you. Use it with
| Aspect | WPScan | Hydra |
|---|---|---|
| Purpose | WordPress-specific scanner | Generic network login brute-forcer |
| XML-RPC support | Native --password-attack xmlrpc mode | Requires a custom POST form template |
| WordPress awareness | Enumerates users, plugins, themes automatically | No WordPress-specific logic |
| Output | Structured report with vulnerability context | Raw credential hits |
| Typical use | Full WordPress audit in a lab | Targeted credential testing on any HTTP form |
--password-attack xmlrpc to keep requests well-formed.Hydra is useful when you need fine-grained control over the HTTP POST body, want to reuse the same toolchain across non-WordPress targets, or need to test a customized XML-RPC method name.How do I verify XML-RPC is enabled on my lab target?
How do I verify XML-RPC is enabled on my lab target?
Send a Enabled and listing methods — the response body starts with:Enabled but GET not accepted — a plain GET request to This message still means XML-RPC is enabled — it just requires a POST. Use the
system.listMethods request with curl. A properly enabled endpoint returns an XML response listing all available methods.xmlrpc.php returns:curl -X POST command above to confirm the endpoint responds to valid requests.Disabled or blocked — you receive a 403, 404, or a redirect away from xmlrpc.php. Double-check the WordPress installation subdirectory (e.g., /lab/, /wordpress/, or the root /).Replace
TARGET with the IP address or hostname of your lab machine and adjust the path to match your installation.Why are there both real names and numbered usernames in users.txt?
Why are there both real names and numbered usernames in users.txt?
users.txt covers two distinct categories of WordPress usernames commonly found in lab and CTF scenarios:Real-name usernames — Common first names and role-based names (e.g., admin, john, alice, developer, sysadmin, webmaster). These reflect realistic corporate or personal WordPress deployments where site owners use recognizable identifiers.Numbered usernames — Patterns such as user1, user2, test01, student10. These are typical of CTF challenge machines and educational lab setups where an instructor created accounts programmatically or used a simple naming scheme.Including both categories increases coverage across the two most common target types you will encounter: realistic simulated environments and purpose-built challenge boxes.How do I add my own entries to the wordlists?
How do I add my own entries to the wordlists?
Both After editing, verify there are no blank lines at the end of the file that could cause tools to send empty credential attempts:
users.txt and passwords.txt are plain text files with one entry per line. Open either file in any text editor and append your entries.The attack is finding too many false positives or running too slow — what should I do?
The attack is finding too many false positives or running too slow — what should I do?
Too slowIncrease the thread count. Both WPScan and Hydra default to conservative concurrency. Start lower if the lab VM is underpowered, then increase until you hit the VM’s limit:Too many false positives (Hydra)Hydra identifies a “hit” by the absence of the failure string. If your failure string does not exactly match the XML-RPC error message on your target, every request looks like a success.
- Run a single known-bad attempt manually and capture the response:
- Copy the exact error text from the response (e.g.,
Incorrect username or password.) and paste it as the failure string in your Hydra command.
What should I do after finding valid credentials in a lab?
What should I do after finding valid credentials in a lab?
Finding valid credentials is the end of the brute-force phase, not the end of the exercise. Follow these steps to complete the lab properly:
Document the finding
Record the exact username and password you found, the time of discovery, the command you used, and the number of attempts it took. This information belongs in your lab report.
Verify access
Use the credentials to log in to the WordPress admin panel (
/wp-admin/) and confirm the level of access granted. Note the user role (subscriber, editor, administrator) as it determines what you can do next in the exercise.Complete the lab objective
Follow the CTF challenge or lab instructions to capture the flag or demonstrate impact (e.g., post a page, access a protected area, retrieve a file). Do not perform actions beyond the defined scope.
Write your report
Summarize the attack path: target identification, XML-RPC enumeration, brute-force approach, credentials found, and impact. Good lab reports form the basis of professional penetration testing deliverables.
In a real engagement, you would stop immediately after confirming access and report the finding to the client. Never use discovered credentials to explore beyond the agreed scope, even in a professional context.