CVE-2023-23725

4.3 MEDIUM

📋 TL;DR

CVE-2023-23725 is a missing authorization vulnerability in the Shortcodes WordPress plugin that allows attackers to bypass access controls and perform unauthorized actions. This affects WordPress sites using the Shortcodes plugin versions up to 3.46, potentially allowing manipulation of shortcode functionality.

💻 Affected Systems

Products:
  • Shortcodes WordPress Plugin
Versions: n/a through 3.46
Operating Systems: Any OS running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects WordPress installations with the Shortcodes plugin installed and activated.

⚠️ 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 modify or inject malicious shortcodes to execute arbitrary code, deface websites, or steal sensitive data from affected WordPress installations.

🟠

Likely Case

Unauthorized users could manipulate shortcode settings, modify content display, or disrupt website functionality through the plugin's administrative features.

🟢

If Mitigated

With proper access controls and authentication requirements, impact is limited to authorized users only, preventing external exploitation.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

Exploitation requires some WordPress access but bypasses authorization checks within the plugin.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 3.47 or later

Vendor Advisory: https://patchstack.com/database/wordpress/plugin/wc-shortcodes/vulnerability/wordpress-shortcodes-by-angie-makes-plugin-3-46-broken-access-control-vulnerability?_s_id=cve

Restart Required: No

Instructions:

1. Log into WordPress admin panel
2. Navigate to Plugins > Installed Plugins
3. Find 'Shortcodes' plugin
4. Click 'Update Now' if available
5. If no update available, download version 3.47+ from WordPress repository
6. Deactivate old version, upload new version, activate

🔧 Temporary Workarounds

Disable Shortcodes Plugin

all

Temporarily disable the vulnerable plugin until patched

wp plugin deactivate shortcodes

Restrict Admin Access

linux

Implement IP whitelisting for WordPress admin area

# Add to .htaccess for Apache:
Order Deny,Allow
Deny from all
Allow from 192.168.1.0/24
# Add to nginx config:
location /wp-admin {
    allow 192.168.1.0/24;
    deny all;
}

🧯 If You Can't Patch

  • Remove the Shortcodes plugin entirely and use alternative shortcode solutions
  • Implement web application firewall (WAF) rules to block suspicious requests to the plugin endpoints

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin panel > Plugins > Shortcodes version. If version is 3.46 or lower, system is vulnerable.

Check Version:

wp plugin get shortcodes --field=version

Verify Fix Applied:

Verify Shortcodes plugin version is 3.47 or higher in WordPress admin panel.

📡 Detection & Monitoring

Log Indicators:

  • Unauthorized POST requests to /wp-admin/admin-ajax.php with 'action' parameter containing 'shortcodes'
  • Multiple failed authentication attempts followed by successful shortcode-related actions

Network Indicators:

  • Unusual traffic patterns to WordPress admin endpoints from unexpected IP addresses
  • POST requests to shortcode-specific endpoints without proper authentication headers

SIEM Query:

source="wordpress.log" AND (uri_path="/wp-admin/admin-ajax.php" AND request_body="*shortcodes*") AND NOT user_agent="*bot*"

🔗 References

📤 Share & Export