CVE-2024-13554
Executive Summary
CVE-2024-13554 is a missing authorization vulnerability in the WordPress plugin "The Ultimate WordPress Toolkit – WP Extended" (versions up to and including 3.0.13). The flaw resides in the reorder_route() function, which lacks a capability check, allowing unauthenticated attackers to reorder posts arbitrarily. This is a WordPress ecosystem issue, not related to Apache or Nginx. The CVSS score is 5.3 (Medium), and no public proof-of-concept or patch details are currently available.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – exploitable remotely.
- Attack Complexity (AC): Low (L) – no special conditions required.
- Privileges Required (PR): None (N) – unauthenticated.
- User Interaction (UI): None (N) – no user action needed.
- Scope (S): Unchanged (U) – impact confined to the vulnerable component.
- Confidentiality (C): None (N) – no data disclosure.
- Integrity (I): Low (L) – post order can be altered.
- Availability (A): None (N) – no denial of service.
Threat Level: Medium. While the impact is limited to reordering posts, this can disrupt content presentation, affect SEO, and potentially be used in combination with other vulnerabilities for more severe attacks.
Deep Dive & Mechanics
The vulnerability exists in the reorder_route() function of the WP Extended plugin. This function is intended to handle AJAX requests for reordering posts, but it fails to verify the user's capabilities (e.g., edit_posts). The function is registered via rest_api_init or similar hooks, making it accessible to unauthenticated users via REST API endpoints.
Root Cause: Missing capability check (CWE-862) in the reorder_route() callback. The function processes POST data containing post IDs and new order positions without validating that the requester has permission to edit posts.
Attack Vector: An attacker sends a crafted HTTP POST request to the vulnerable REST endpoint (e.g., /wp-json/wp-extended/v1/reorder) with a JSON payload specifying post IDs and their new order. The server processes the request and updates the menu_order field in the wp_posts table.
Impact: Unauthorized reordering of posts, pages, or custom post types. This can lead to:
- Disruption of content hierarchy.
- Manipulation of featured or sticky posts.
- Potential SEO damage if search engine crawlers index reordered content.
Vulnerable vs. Patched Code
Vulnerable Code (<= 3.0.13):
// In class-wp-extended-api.php or similar
public function reorder_route( $request ) {
$posts = $request->get_param( 'posts' );
foreach ( $posts as $post ) {
wp_update_post( array(
'ID' => $post['id'],
'menu_order' => $post['order']
) );
}
return new WP_REST_Response( array( 'success' => true ), 200 );
}
Issue: No capability check before wp_update_post.
Patched Code (Hypothetical):
public function reorder_route( $request ) {
if ( ! current_user_can( 'edit_posts' ) ) {
return new WP_Error( 'rest_forbidden', 'You do not have permission to reorder posts.', array( 'status' => 403 ) );
}
$posts = $request->get_param( 'posts' );
foreach ( $posts as $post ) {
wp_update_post( array(
'ID' => $post['id'],
'menu_order' => $post['order']
) );
}
return new WP_REST_Response( array( 'success' => true ), 200 );
}
Fix: Added current_user_can( 'edit_posts' ) check.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- Target WordPress site with WP Extended plugin <= 3.0.13.
- Network access to the site.
Exploit Steps:
- Identify the vulnerable endpoint (e.g.,
/wp-json/wp-extended/v1/reorder). - Craft a POST request with JSON body containing post IDs and new order values.
- Send the request without authentication.
Example cURL Command:
curl -X POST https://target.com/wp-json/wp-extended/v1/reorder \
-H "Content-Type: application/json" \
-d '{"posts":[{"id":1,"order":10},{"id":2,"order":5}]}'
Expected Result: Posts with IDs 1 and 2 are reordered to menu_order 10 and 5 respectively.
Blue Team (Detection & Defense)
Detection:
- Monitor REST API logs for unauthorized POST requests to
/wp-json/wp-extended/v1/reorder. - Look for requests without authentication tokens or cookies.
- Alert on unusual patterns of
menu_orderchanges in the database.
Defense:
- Update the plugin to a patched version (once available).
- Implement a Web Application Firewall (WAF) rule to block requests to the vulnerable endpoint from unauthenticated users.
- Use a security plugin to enforce capability checks on REST API endpoints.
Indicators of Compromise (IOCs)
- Network: POST requests to
/wp-json/wp-extended/v1/reorderwithout authentication. - Logs: WordPress debug log entries showing
wp_update_postcalls from unauthenticated users. - Database: Unusual
menu_ordervalues inwp_poststable for posts that should not have been reordered. - File: Modified
wp_poststable entries with unexpectedmenu_orderchanges.
Detection Engineering
YARA Rule
rule CVE_2024_13554_WP_Extended_Reorder {
meta:
description = "Detects vulnerable WP Extended plugin reorder_route function"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-13554"
strings:
$func = "reorder_route" ascii wide nocase
$no_check = "current_user_can" ascii wide nocase
condition:
$func and not $no_check
}
Sigma Rule
title: Unauthenticated POST to WP Extended Reorder Endpoint
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects unauthenticated POST requests to the WP Extended reorder endpoint
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: POST
cs-uri-stem: /wp-json/wp-extended/v1/reorder
sc-status: 200
condition: selection
falsepositives:
- Legitimate authenticated reordering
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-13554 WP Extended Reorder Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/wp-json/wp-extended/v1/reorder"; http_uri; content:"posts"; http_client_body; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the WP Extended plugin until a patch is available.
- Add a WAF rule to block POST requests to
/wp-json/wp-extended/v1/reorderfrom unauthenticated users. - Review and revert any unauthorized post reordering in the database.
Long-term Fix:
- Apply the vendor patch once released (check plugin update page).
- Implement a custom capability check by adding a filter to the vulnerable function (if possible).
- Regularly audit WordPress plugins for missing authorization checks.
Valters IT – Securing WordPress ecosystems one CVE at a time.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.