CVE-2020-24948

7.2 HIGH

📋 TL;DR

This vulnerability allows authenticated WordPress administrators to upload arbitrary files through the Autoptimize plugin's AJAX interface, bypassing file type validation. Attackers can upload PHP files leading to remote code execution on the server. Only WordPress sites running the vulnerable Autoptimize plugin version are affected.

💻 Affected Systems

Products:
  • WordPress Autoptimize Plugin
Versions: 2.7.6 and earlier
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Requires WordPress administrator privileges to exploit. Plugin must be active and the ao_ccss_import AJAX endpoint accessible.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Full server compromise with attacker gaining persistent access, data exfiltration, and lateral movement within the network.

🟠

Likely Case

Website defacement, malware injection, backdoor installation, and credential theft from the compromised WordPress instance.

🟢

If Mitigated

Limited to authenticated admin users only, reducing attack surface if proper access controls are enforced.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: CONFIRMED
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploit requires WordPress administrator credentials. Public exploit code available in Packet Storm references.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.7.7 and later

Vendor Advisory: https://wordpress.org/plugins/autoptimize/#developers

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins > Installed Plugins. 3. Find Autoptimize and click 'Update Now'. 4. Verify version is 2.7.7 or higher.

🔧 Temporary Workarounds

Disable Autoptimize Plugin

all

Temporarily deactivate the vulnerable plugin until patched

wp plugin deactivate autoptimize

Restrict AJAX Access

all

Block access to the vulnerable AJAX endpoint via web server configuration

# Apache: <LocationMatch "\/wp-admin\/admin-ajax\.php\?action=ao_ccss_import">\n    Deny from all\n</LocationMatch>
# Nginx: location ~* \/wp-admin\/admin-ajax\.php\?action=ao_ccss_import {\n    deny all;\n}

🧯 If You Can't Patch

  • Remove administrator privileges from untrusted users
  • Implement web application firewall rules to block file uploads to the vulnerable endpoint

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin panel > Plugins > Autoptimize for version 2.7.6 or earlier

Check Version:

wp plugin get autoptimize --field=version

Verify Fix Applied:

Confirm Autoptimize version is 2.7.7 or higher in WordPress admin

📡 Detection & Monitoring

Log Indicators:

  • POST requests to /wp-admin/admin-ajax.php with action=ao_ccss_import
  • File uploads of .php files via AJAX endpoints
  • Unusual file creation in WordPress uploads directory

Network Indicators:

  • HTTP POST to admin-ajax.php with zip file uploads
  • Unexpected outbound connections from web server

SIEM Query:

source="web_server" AND (url="*admin-ajax.php*action=ao_ccss_import*" OR file_extension="php" AND upload_action="ao_ccss_import")

🔗 References

📤 Share & Export