CVE-2025-54710
Executive Summary
CVE-2025-54710 is a Missing Authorization vulnerability in the bPlugins Tiktok Feed WordPress plugin (slug: b-tiktok-feed). This flaw allows unauthenticated attackers to access functionality that should be constrained by Access Control Lists (ACLs). The vulnerability affects all versions up to and including 1.0.21. As of this report, no official patch has been released, and the vendor has not acknowledged the issue.
This is a WordPress ecosystem vulnerability, not related to Apache or Nginx. The plugin fails to properly enforce capability checks on AJAX actions or REST endpoints, enabling attackers to potentially read, modify, or delete TikTok feed data, or perform other privileged operations without authentication.
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
Supply Chain & Package Security
This is a WordPress plugin distributed via the official WordPress Plugin Directory. Users who installed the plugin via the WordPress admin dashboard or directly from the repository are affected. There is no known compromise of the plugin’s source code repository, but the lack of a patch means all installations remain vulnerable. Organizations should treat this as a supply chain risk and consider removing the plugin until a fix is available.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
- Base Score: 7.1 (High)
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: Low
- Integrity Impact: Low
- Availability Impact: Low
The vulnerability is rated High due to the lack of authentication required and the potential for data manipulation or unauthorized access to plugin functionality.
Deep Dive & Mechanics
The b-tiktok-feed plugin registers several AJAX handlers and possibly REST API endpoints to manage TikTok feeds. The core issue is that these handlers do not perform current_user_can() checks or nonce verification before executing sensitive operations. For example, an endpoint used to update feed settings or retrieve cached data may be accessible to any unauthenticated visitor.
The plugin likely uses wp_ajax_* and wp_ajax_nopriv_* hooks. The nopriv hooks are intended for unauthenticated users, but the developer may have mistakenly allowed privileged actions to be called without authentication. Alternatively, the plugin may rely on a custom capability that is not properly enforced.
An attacker can craft a simple HTTP request to the vulnerable endpoint, bypassing any intended access controls. This could allow:
- Retrieval of private feed data (e.g., API keys, user tokens).
- Modification of feed display settings.
- Deletion of stored feed entries.
- Potential stored XSS if the plugin outputs unsanitized data.
Vulnerable vs. Patched Code
Since no patch exists, we can only analyze the vulnerable code pattern. A typical vulnerable snippet might look like:
// Vulnerable: No capability check
add_action('wp_ajax_nopriv_bttf_update_feed', 'bttf_update_feed_callback');
function bttf_update_feed_callback() {
// Process request without checking user permissions
update_option('bttf_feed_settings', $_POST['settings']);
wp_die();
}
A patched version would include:
// Patched: Check user capability
add_action('wp_ajax_bttf_update_feed', 'bttf_update_feed_callback');
function bttf_update_feed_callback() {
if (!current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
check_ajax_referer('bttf_nonce', 'nonce');
update_option('bttf_feed_settings', sanitize_text_field($_POST['settings']));
wp_die();
}
The patched code moves the action to wp_ajax_* (authenticated only) and adds capability and nonce checks.
Exploitation & Lab Setup
Red Team
Prerequisites:
- A WordPress site with
b-tiktok-feedversion <= 1.0.21 installed and activated. - No authentication required.
Exploitation Steps:
Identify the vulnerable endpoint. Common patterns include
/wp-admin/admin-ajax.phpwith action parameters likebttf_get_feed,bttf_update_settings, orbttf_delete_cache.Craft a request using
curl:
curl -X POST http://target.com/wp-admin/admin-ajax.php \
-d "action=bttf_get_feed&feed_id=1"
If the endpoint returns sensitive data (e.g., API keys, user tokens), extract it.
For modification, send a POST request with new settings:
curl -X POST http://target.com/wp-admin/admin-ajax.php \
-d "action=bttf_update_settings&settings[api_key]=attacker_key"
- Verify the change by accessing the feed page.
Note: No public exploit code exists, but the vulnerability is trivially exploitable with basic HTTP requests.
Blue Team
Detection & Prevention:
- Monitor
admin-ajax.phprequests for unusualactionparameters related tobttfortiktok. - Implement Web Application Firewall (WAF) rules to block unauthenticated requests to plugin-specific AJAX actions.
- Use a WordPress security plugin (e.g., Wordfence) to enforce capability checks on all AJAX endpoints.
- Disable the plugin immediately if no patch is available.
Honeypot Setup:
- Create a decoy endpoint that mimics the vulnerable AJAX action and logs all requests for analysis.
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP POST requests to
/wp-admin/admin-ajax.phpwithactionparameter containingbttf_ortiktok_feed. - Unusual
Refererheaders or missing nonce parameters.
- HTTP POST requests to
- File IOCs:
- Presence of the plugin directory
/wp-content/plugins/b-tiktok-feed/. - Modified options in
wp_optionstable with prefixbttf_.
- Presence of the plugin directory
- Log IOCs:
- Repeated 200 responses to
admin-ajax.phpfrom unauthenticated IPs. - Error logs showing
Undefined array keyorTrying to access array offset on nullrelated to plugin functions.
- Repeated 200 responses to
Detection Engineering
YARA Rule
rule detect_b_tiktok_feed_vuln {
meta:
description = "Detects vulnerable b-tiktok-feed plugin files"
author = "Valters IT"
date = "2025-04-01"
cve = "CVE-2025-54710"
strings:
$vuln_func = /add_action\s*\(\s*['\"]wp_ajax_nopriv_[a-z_]*bttf[a-z_]*['\"]/
$no_cap = /current_user_can\s*\(/
condition:
$vuln_func and not $no_cap
}
Sigma Rule
title: Unauthenticated AJAX Request to b-tiktok-feed Plugin
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects unauthenticated POST requests to admin-ajax.php with b-tiktok-feed actions
author: Valters IT
date: 2025-04-01
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'admin-ajax.php'
cs-uri-query|contains|all:
- 'action=bttf_'
- 'action=tiktok_feed'
condition: selection
falsepositives:
- Legitimate admin actions if nonce is present (but unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-54710 - Unauthenticated b-tiktok-feed AJAX Request"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=bttf_"; http_client_body; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is released. Navigate to Plugins > Installed Plugins and deactivate
b-tiktok-feed. - Remove the plugin entirely if not critical to operations.
- Audit user accounts for any unauthorized changes made via the vulnerability.
Long-term Mitigation:
- Monitor the WordPress Plugin Directory for updates. Subscribe to security advisories.
- Implement a Web Application Firewall (WAF) with rules to block unauthenticated AJAX requests to plugin-specific actions.
- Enforce the principle of least privilege by ensuring all AJAX handlers check for appropriate capabilities.
- Consider using a plugin like "Patchstack" or "Wordfence" for virtual patching.
Vendor Communication:
- Attempt to contact bPlugins via their support channels. If no response, report the vulnerability to the WordPress Plugin Security Team.
Valters IT
Securing Digital Frontiers
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.