Main Page

Default main page

/index.php

Potential Version Disclosure

Contains potential useful information such as the version of WordPress installed (In very old WordPress versions)

/license.txt

Email Service

Used for the email activation process when setting up a new WordPress site

/wp-activate.php

Login Page

Default login page for WordPress. Sometimes certain paths are blocked, so test all of them. You might be redirected to the correct login path if it's been changed.

/wp-login.php
/wp/wp-login.php
/wp-login/
/login/
/wp-admin.php
/wp-admin/
/wordpresswp-admin/wp-login.php

Hidden Admin Login

Sometimes the login page are well hidden and a simple /wp-admin/ request is insufficient to be redirected to the login page. This is another way to be able to find where the login page may be. Navigate to the following URL (ID parameter value might need to be adjusted):

/wp-admin/post.php?id=123

If successful you may, in some instances, be able to grep for must-log-in. What you will see is the following string, exposing the endpoint where the admin login page is located on the application:

<p class="must-log-in">You must be <a href="https://example.com/path-to-admin-panel.php/?redirect_to=https%3A%2F%2Fexample.com%2Fen%2F404%2F">logged in</a> to post a comment.</p>

Default Administration Page

Default administration panel for WordPress - Need to be authenticated to access this page

/wp-admin.php

Developers API

An API for developers to talk with their application. For some reason, it's active by default. Here you may perform pingbacks with the pingback.ping method to either use it in a DDOS attack towards other applications, pingback as in receiving information such as version number of the WP site and more. It is also possible to make the application brute force it's own users with the wp.getUsersBlogs method. In combination with system.multicall method, multiple users may be brute forced with one request alone, leading to a potential DOS. Read more about this within XML-RPC

/xmlrpc.php

Plugin and Theme Storage

Directory where the Plugins and Themes are stored within the application. Directory Listing often seen!

/wp-content/

File Upload Storage

The directory where any files uploaded to the platform are stored. Unless there's a plugin and it's uploaded elsewhere. Directory Listing often seen!

/wp-content/uploads/

Core Files

This is the directory where core files are stored, such as certificates, fonts, JavaScript files, and widgets. Directory Listing often seen!

/wp-includes/

Configuration File

Contains the information such as database name, database host, usernames, passwords, authentication keys, salts and the database table prefix. This configuration file can also be used to activate DEBUG mode, which can be useful when troubleshooting.

/wp-config.php
/wp-config.php.save

User Database

When this file is accessed, a heavy MySQL query is performed in the background, which means it could be used by attackers to perform a DoS depending on how many users are registered within the application.

/wp-cron.php

This one does not seem to be the same as wp-cron.php. It looks like it only has some "instructions" for wp-cron.php. Nothing else can be exploited here!

/wp-includes/cron.php

Registered Users

Shows you a list of users registered on the application! Sometimes the application uses a WAF that is case sensitive. Because of the case sensitivity, the latest one would then potentially work

/wp-json/wp/v2/users
/?rest_route=/wp/v2/users
/?rest_route=/wp/v2/uSeRS

Register Page

Register page. Keep in mind that the default WordPress keeps this endpoint disabled. If lucky, an admin might've used it at a later date and forgotten to disable it. The parameters tend to make a difference as it, on occasion, uses JavaScript for you to access the form of registration.

/wp-register.php
/wp/wp-login.php
/wp-login.php?action=register
/wp/wp-login.php?action=register
/wp-signup.php
/wp/wp-signup.php

Default Readme File

If the meta tag has been disabled, check for the presence of /readme.html from root of the install. Early versions of WordPress had the version right there at the top of the readme.html file. Newer versions of WordPress have removed the version from the file.

/readme.html

Page Content via REST API

There may be an Internal Host Disclosure within this page. Being able to find administrative pages or other parts of the application that may not be in use or are otherwise inaccessabe by normal navigation on the site. Such as pages containing contact forms or upload functionalities that may have been forgotten. Remember to keep enumerating. Just because it might end at 300, doesn't mean there's no page with an ID of 794. These "gaps" happens when pages are deleted and new ones are created. If page 1,2,3,4 have been removed, but page 5 exists, you will see some data leading to that endpoint.

/wp-json/wp/v2/pages
/wp-json/wp/v2/pages/<ID>

Public Comments via REST API

Navigating to one of the URLs, you will see pages that contains public comments. In the link parameter, you will see the page with the comments made from the WordPress users. author_name parameter is not the same as the actual author which is the name used to log in to the WordPress account.

/wp-json/wp/v2/comments
/wp-json/wp/v2/comments/<ID>

More Generator Locations

Generator tag exposes the WordPress version. Additionally, the feed paths tend to expose registered users or at least their nicknames. Get these verified within a user enumeration before believing they're users on the app.

/feed/
/feed/rss/
/feed/rss2/
/feed/rdf/
/feed/atom/
/wp-rdf.php
/wp-rss.php
/wp-rss2.php
/wp-atom.php

You have an additional "feed" section after the search field which may disclose users and/or WordPress version

/search/{search_here}/feed/rss2/

It may also work with the rest_route parameter in case WAF blocks stuff

wp-links-opml.php

The endpoint is used to export links from one blog post to another. This exposes the Generator meta tag as well, revealing the WordPress version. Adding the secondary payload, may expose an internal path:

/wp-links-opml.php
/wp-links-opml.php?link_cat[]

WPEngine Database Credentials

WPEngine is a provider of managed WordPress hosting. WPEngine creates a folder named _wpeprivate that contains the config.json file. This file contains highly sensitive information such as WPEngine database credentials and should not be publicly accessible. It was confirmed that in some instances, it's possible to access this file without authorization. Seeing signs of WPEngine, test for this!

/_wpeprivate/config.json