CVE-2025-11859

6.4 MEDIUM

📋 TL;DR

This stored XSS vulnerability in the PayPal Donation Shortcode WordPress plugin allows authenticated attackers with contributor-level access or higher to inject malicious scripts into website pages. When users visit compromised pages, the scripts execute in their browsers, potentially stealing credentials or performing unauthorized actions. All WordPress sites using this plugin version 0.1 or earlier are affected.

💻 Affected Systems

Products:
  • PayPal Donation Shortcode WordPress Plugin
Versions: All versions up to and including 0.1
Operating Systems: All operating systems running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Requires WordPress installation with the vulnerable plugin activated. Contributor-level access or higher needed 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 steal administrator credentials, deface websites, redirect users to malicious sites, or install backdoors for persistent access.

🟠

Likely Case

Attackers with contributor accounts inject malicious scripts to steal user session cookies or credentials, potentially compromising user accounts.

🟢

If Mitigated

With proper input validation and output escaping, the risk is limited to minor content manipulation with no significant security impact.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires authenticated access but is technically simple once an attacker has contributor privileges.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Not available

Vendor Advisory: https://plugins.trac.wordpress.org/browser/paypal-donation-shortcode/tags/0.1/paypal-donation-shortcode.php#L23

Restart Required: No

Instructions:

1. Remove the PayPal Donation Shortcode plugin from your WordPress installation. 2. Delete the plugin files from /wp-content/plugins/paypal-donation-shortcode/. 3. Consider alternative donation plugins with proper security practices.

🔧 Temporary Workarounds

Restrict User Roles

all

Limit contributor-level access to trusted users only and implement strong authentication controls.

Input Validation Filter

all

Add custom WordPress filters to sanitize 'title' and 'text' parameters before processing.

add_filter('preprocess_shortcode_title', 'esc_html');
add_filter('preprocess_shortcode_text', 'esc_html');

🧯 If You Can't Patch

  • Disable the PayPal Donation Shortcode plugin immediately
  • Implement web application firewall rules to block XSS payloads in shortcode parameters

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin panel > Plugins > PayPal Donation Shortcode. If version is 0.1 or earlier, you are vulnerable.

Check Version:

wp plugin list --name='paypal-donation-shortcode' --field=version

Verify Fix Applied:

Verify the plugin is completely removed from /wp-content/plugins/ directory and no longer appears in WordPress admin.

📡 Detection & Monitoring

Log Indicators:

  • Unusual shortcode modifications by contributor-level users
  • Multiple failed authentication attempts followed by successful contributor login

Network Indicators:

  • HTTP requests containing suspicious script tags in 'title' or 'text' parameters
  • Unexpected outbound connections from WordPress pages

SIEM Query:

source="wordpress.log" AND ("paypal-donation-shortcode" OR "[paypal") AND ("<script>" OR "javascript:" OR "onerror=")

🔗 References

📤 Share & Export