CVE-2025-23817

7.1 HIGH

📋 TL;DR

A Cross-Site Request Forgery (CSRF) vulnerability in the MHR-Custom-Anti-Copy WordPress plugin allows attackers to perform stored cross-site scripting (XSS) attacks. This affects WordPress sites using vulnerable versions of the plugin, potentially compromising site visitors and administrators. Attackers can inject malicious scripts that execute when users visit compromised pages.

💻 Affected Systems

Products:
  • MHR-Custom-Anti-Copy WordPress Plugin
Versions: All versions up to and including 2.0
Operating Systems: Any OS running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects WordPress installations with the vulnerable plugin activated. The plugin must be installed and active for exploitation.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could inject persistent malicious scripts that steal session cookies, redirect users to phishing sites, or perform administrative actions on behalf of authenticated users, potentially leading to complete site takeover.

🟠

Likely Case

Attackers inject malicious JavaScript that steals user session cookies or redirects visitors to malicious sites, compromising user accounts and site integrity.

🟢

If Mitigated

With proper CSRF protections and content security policies, the attack surface is reduced, but the vulnerability still exists in the codebase.

🌐 Internet-Facing: HIGH
🏢 Internal Only: LOW

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: MEDIUM

Exploitation requires tricking an authenticated user into visiting a malicious page while logged into the WordPress admin panel. The CSRF leads to stored XSS payload injection.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Versions after 2.0

Vendor Advisory: https://patchstack.com/database/wordpress/plugin/mhr-custom-anti-copy/vulnerability/wordpress-mhr-custom-anti-copy-plugin-2-0-csrf-to-stored-cross-site-request-forgery-csrf-vulnerability?_s_id=cve

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins > Installed Plugins. 3. Locate 'MHR-Custom-Anti-Copy'. 4. Click 'Update Now' if available. 5. If no update is available, deactivate and delete the plugin immediately.

🔧 Temporary Workarounds

Implement CSRF Protection

all

Add CSRF tokens to all form submissions and AJAX requests in the plugin code

Content Security Policy

all

Implement a strict Content Security Policy header to mitigate XSS impact

Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' https:;" in .htaccess or server config

🧯 If You Can't Patch

  • Deactivate and remove the MHR-Custom-Anti-Copy plugin immediately
  • Implement web application firewall rules to block CSRF attempts and XSS payloads

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin panel > Plugins > Installed Plugins for MHR-Custom-Anti-Copy version 2.0 or earlier

Check Version:

wp plugin list --name=mhr-custom-anti-copy --field=version (if WP-CLI installed)

Verify Fix Applied:

Verify plugin version is higher than 2.0 or confirm plugin is completely removed from /wp-content/plugins/ directory

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to WordPress admin-ajax.php or admin-post.php endpoints
  • JavaScript injection patterns in plugin-related database entries

Network Indicators:

  • CSRF attack patterns with missing referrer headers or nonce tokens
  • Unexpected iframe or script tags in HTTP responses

SIEM Query:

source="wordpress.log" AND ("admin-ajax.php" OR "admin-post.php") AND (POST) AND NOT (referer="*wp-admin*")

🔗 References

📤 Share & Export