Excessive Data Exposure
Check List
Methodology
Black Box
WordPress User Enumeration via Public REST API
Check if the target is running WordPress
Send a direct GET request to the default WordPress REST API users endpoint
https://target.com/wp-json/wp/v2/usersAlternative endpoints (in case the main one is blocked)
https://target.com/wp-json/wp/v2/users/?per_page=100
https://target.com/wp-json/wp/v2/users/1
https://target.com/index.php?rest_route=/wp/v2/users
https://target.com/wp-json/wp/v2/users/meIf the response returns a JSON array with user objects containing any of these fields → vulnerability confirmed
id, name, slug, username, login, nickname, url, descriptionEnumerate user IDs sequentially
https://target.com/wp-json/wp/v2/users/1
https://target.com/wp-json/wp/v2/users/2
...
https://target.com/wp-json/wp/v2/users/100Information Disclosure via Verbose Error Messages
Discover any authentication or ID-based endpoint Common ones
/api/login, /api/auth, /v1/sessions, /api/v2/users/{id}, /api/forgot-password, /api/check-emailSend a request with a completely fake/non-existent user/ID/email
{"email": "this-user-definitely-does-not-exist-12345@target.com", "password": "anything"}Capture the exact error message and status code
Now send the same request with a real-looking but still fake value (or incremental ID)
{"email": "admin@target.com", "password": "wrong"}Compare the two responses – look for any of these differences
"User does not exist"
"Invalid password"
User exists → Enumeration confirmed
"Invalid credentials"
"Password is incorrect"
Same
404 Not Found
401 Unauthorized or 403 Forbidden
Same
"account_not_found"
"wrong_password"
Same
Response time 80 ms
Response time 350 ms
Possible existence
Build a small wordlist of probable emails
admin@target.com
support@target.com
john.doe@target.com
jdoe@target.comInformation Disclosure
Create a normal/low-privilege account on the target
Find any API endpoint that returns data about yourself or your resources Common ones
GET /api/me
GET /api/v1/profile
GET /api/v2/userCall the endpoint with your account and capture the full JSON response
Try the same endpoint with other users’ identifiers (if possible)
GET /api/v3/accounts?name=admin
GET /api/v3/accounts?id=1If we get additional data by sending another username or email address, the vulnerability is confirmed
White Box
Cheat Sheet
Last updated