CVE-2025-28883

7.1 HIGH

📋 TL;DR

A Cross-Site Request Forgery (CSRF) vulnerability in the Martin WP Compare Tables WordPress plugin allows attackers to perform stored cross-site scripting (XSS) attacks. This affects WordPress sites using WP Compare Tables plugin versions up to 1.0.5. Attackers can trick authenticated administrators into executing malicious actions that inject persistent scripts.

💻 Affected Systems

Products:
  • Martin WP Compare Tables WordPress Plugin
Versions: n/a through 1.0.5
Operating Systems: All operating systems running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects WordPress installations with the vulnerable plugin installed and activated. Requires an authenticated administrator to be tricked into performing an action.

⚠️ 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 malicious JavaScript that steals administrator credentials, redirects users to malicious sites, or takes full control of the WordPress site through persistent XSS payloads.

🟠

Likely Case

Attackers create fake forms or links that trick logged-in administrators into unknowingly submitting malicious requests, leading to stored XSS payloads being injected into the site.

🟢

If Mitigated

With proper CSRF tokens and input validation, the vulnerability would be prevented as legitimate requests would be properly authenticated and sanitized.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

Exploitation requires social engineering to trick authenticated users. The CSRF leads to stored XSS, making it a two-stage attack.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Version after 1.0.5

Vendor Advisory: https://patchstack.com/database/wordpress/plugin/wp-compare-tables/vulnerability/wordpress-wp-compare-tables-plugin-1-0-5-csrf-to-stored-xss-vulnerability?_s_id=cve

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins > Installed Plugins. 3. Find 'WP Compare Tables'. 4. Click 'Update Now' if update available. 5. If no update, deactivate and delete plugin, then install latest version from WordPress repository.

🔧 Temporary Workarounds

Implement CSRF Protection

all

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

Input Sanitization

all

Implement proper input validation and output escaping for all user inputs

🧯 If You Can't Patch

  • Deactivate and remove the WP Compare Tables plugin immediately
  • Implement web application firewall (WAF) rules to block CSRF attempts and XSS payloads

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin panel > Plugins > Installed Plugins for WP Compare Tables version. If version is 1.0.5 or earlier, you are vulnerable.

Check Version:

wp plugin list --name='wp-compare-tables' --field=version

Verify Fix Applied:

After updating, verify the plugin version is higher than 1.0.5 in WordPress admin panel.

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to wp-admin/admin-ajax.php with compare table parameters
  • Multiple failed CSRF token validations
  • Suspicious JavaScript injection in database content

Network Indicators:

  • Unexpected form submissions from external sites to WordPress admin endpoints
  • Traffic patterns showing CSRF exploitation attempts

SIEM Query:

source="wordpress" AND (uri_path="/wp-admin/admin-ajax.php" AND parameters CONTAINS "compare_table")

🔗 References

📤 Share & Export