CVE-2025-14110
📋 TL;DR
The WP Js List Pages Shortcodes WordPress plugin has a stored XSS vulnerability in all versions up to 1.21. Authenticated attackers with Contributor access or higher can inject malicious scripts via the 'class' shortcode attribute, which execute when users view affected pages. This affects all WordPress sites using vulnerable versions of this plugin.
💻 Affected Systems
- WP Js List Pages Shortcodes WordPress plugin
⚠️ 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.
- Review the CVE details at NVD
- Check vendor security advisories for your specific version
- Test if the vulnerability is exploitable in your environment
- Consider updating to the latest version as a precaution
⚠️ Risk & Real-World Impact
Worst Case
Attackers could steal admin credentials, redirect users to malicious sites, deface websites, or install backdoors for persistent access.
Likely Case
Attackers with contributor accounts inject malicious scripts to steal user session cookies or redirect visitors to phishing pages.
If Mitigated
With proper user access controls and content security policies, impact is limited to potential data leakage from affected pages.
🎯 Exploit Status
Exploitation requires Contributor-level access. The vulnerability is straightforward to exploit once authenticated.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: Version after 1.21 (check WordPress plugin repository)
Vendor Advisory: https://plugins.trac.wordpress.org/browser/wp-js-list-pages-shortcodes
Restart Required: No
Instructions:
1. Log into WordPress admin panel. 2. Navigate to Plugins → Installed Plugins. 3. Find 'WP Js List Pages Shortcodes'. 4. Click 'Update Now' if available. 5. If no update available, deactivate and delete the plugin.
🔧 Temporary Workarounds
Remove Contributor Role Access
allTemporarily restrict or remove Contributor role access until patching is complete.
Use WordPress user management to modify role permissions
Content Security Policy
allImplement CSP headers to restrict script execution from untrusted 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
- Deactivate and remove the WP Js List Pages Shortcodes plugin immediately
- Implement strict user access controls and audit all Contributor-level accounts
🔍 How to Verify
Check if Vulnerable:
Check WordPress admin → Plugins → Installed Plugins for 'WP Js List Pages Shortcodes' version 1.21 or earlier
Check Version:
WordPress CLI: wp plugin list --name='wp-js-list-pages-shortcodes' --field=version
Verify Fix Applied:
Verify plugin version is higher than 1.21 or plugin is completely removed
📡 Detection & Monitoring
Log Indicators:
- Unusual POST requests to wp-admin with 'class' parameter containing script tags
- Multiple page edits by Contributor accounts in short timeframe
Network Indicators:
- Outbound connections to suspicious domains from WordPress pages
- Unexpected script loads in page responses
SIEM Query:
source="wordpress" AND (http_method="POST" AND uri_path="/wp-admin/*" AND http_query="*class=*script*" OR http_body="*class=*script*")
🔗 References
- https://plugins.trac.wordpress.org/browser/wp-js-list-pages-shortcodes/tags/1.21/js-list-pages-shortcodes.php#L58
- https://plugins.trac.wordpress.org/browser/wp-js-list-pages-shortcodes/trunk/js-list-pages-shortcodes.php#L47
- https://plugins.trac.wordpress.org/browser/wp-js-list-pages-shortcodes/trunk/js-list-pages-shortcodes.php#L50
- https://plugins.trac.wordpress.org/browser/wp-js-list-pages-shortcodes/trunk/js-list-pages-shortcodes.php#L58
- https://www.wordfence.com/threat-intel/vulnerabilities/id/3f8dced7-cbe1-4d50-9fa0-1cf441dddefa?source=cve