CVE-2025-13885

6.4 MEDIUM

📋 TL;DR

The Zenost Shortcodes WordPress plugin has a stored cross-site scripting vulnerability that allows authenticated attackers with Contributor access or higher to inject malicious scripts into website pages. These scripts execute whenever users view the compromised pages, potentially stealing credentials or performing unauthorized actions. All WordPress sites using Zenost Shortcodes version 1.0 or earlier are affected.

💻 Affected Systems

Products:
  • Zenost Shortcodes WordPress Plugin
Versions: All versions up to and including 1.0
Operating Systems: Any OS running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Requires WordPress installation with Zenost Shortcodes plugin enabled and at least one user with Contributor role or higher.

⚠️ 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 display phishing content to visitors.

🟢

If Mitigated

With proper user access controls and content security policies, impact is limited to script execution in the context of the vulnerable page only.

🌐 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 attacker has Contributor-level credentials.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Not available

Vendor Advisory: https://plugins.trac.wordpress.org/browser/zenost-shortcodes

Restart Required: No

Instructions:

1. Deactivate and delete the Zenost Shortcodes plugin from WordPress admin panel. 2. Remove any remaining plugin files from /wp-content/plugins/zenost-shortcodes/. 3. Review and clean any posts/pages containing Zenost shortcodes.

🔧 Temporary Workarounds

Disable Contributor Role

all

Temporarily disable or restrict Contributor user role to prevent exploitation.

Use WordPress role management plugins or custom code to disable Contributor role

Implement Content Security Policy

all

Add CSP headers to restrict script execution sources.

Add to .htaccess: Header set Content-Security-Policy "default-src 'self'; script-src 'self'"
Or use WordPress security plugins to implement CSP

🧯 If You Can't Patch

  • Remove all users with Contributor role or higher who are not absolutely necessary
  • Implement web application firewall rules to block suspicious shortcode parameters

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin > Plugins page for Zenost Shortcodes version 1.0 or earlier.

Check Version:

wp plugin list --name=zenost-shortcodes --field=version (WP-CLI) or check WordPress admin interface

Verify Fix Applied:

Confirm Zenost Shortcodes plugin is not listed in WordPress plugins or is completely removed from /wp-content/plugins/.

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to WordPress admin-ajax.php with 'link' or 'target' parameters
  • Multiple failed login attempts followed by successful Contributor login

Network Indicators:

  • HTTP requests containing zenost shortcode parameters with script tags or javascript: URIs

SIEM Query:

source="wordpress.log" AND ("zenost" OR "shortcode") AND ("link=" OR "target=") AND ("script" OR "javascript:")

🔗 References

📤 Share & Export