CVE-2021-24191

8.8 HIGH

📋 TL;DR

This vulnerability allows low-privileged WordPress users (subscriber/contributor level) to install and activate arbitrary plugins from the WordPress repository. Attackers can exploit this to install vulnerable plugins that could lead to remote code execution. All WordPress sites using the WP Maintenance Mode plugin before version 1.8.2 are affected.

💻 Affected Systems

Products:
  • WP Maintenance Mode & Site Under Construction WordPress Plugin
Versions: All versions before 1.8.2
Operating Systems: All operating systems running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Requires at least one low-privileged user account to exist on the WordPress site.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers gain full control of the WordPress site through plugin installation leading to remote code execution, data theft, and complete system compromise.

🟠

Likely Case

Attackers install malicious plugins to establish persistence, steal data, or use the site for phishing/malware distribution.

🟢

If Mitigated

With proper user role management and security plugins, impact is limited to unauthorized plugin installations that can be detected and removed.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

Exploitation requires authenticated low-privileged access. Public exploit code is available in security advisories.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 1.8.2

Vendor Advisory: https://wpscan.com/vulnerability/74889e29-5349-43d1-baf5-1622493be90c

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Go to Plugins → Installed Plugins. 3. Find 'WP Maintenance Mode & Site Under Construction'. 4. Click 'Update Now' or manually update to version 1.8.2 or higher.

🔧 Temporary Workarounds

Disable vulnerable AJAX endpoint

all

Remove or restrict access to the vulnerable cp_plugins_do_button_job_later_callback AJAX action

Add to theme's functions.php or custom plugin: remove_action('wp_ajax_cp_plugins_do_button_job_later_callback', 'cp_plugins_do_button_job_later_callback');

Restrict user capabilities

all

Remove install_plugins and activate_plugins capabilities from low-privileged roles

Add to theme's functions.php: remove_cap('subscriber', 'install_plugins'); remove_cap('contributor', 'install_plugins');

🧯 If You Can't Patch

  • Disable the WP Maintenance Mode plugin entirely until patched
  • Implement strict user role management and monitor for unauthorized plugin installations

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin panel → Plugins → Installed Plugins for WP Maintenance Mode version. If version is below 1.8.2, the site is vulnerable.

Check Version:

wp plugin list --name="WP Maintenance Mode" --field=version

Verify Fix Applied:

Verify plugin version is 1.8.2 or higher in WordPress admin panel. Test that low-privileged users cannot install or activate plugins.

📡 Detection & Monitoring

Log Indicators:

  • WordPress logs showing plugin installations/activations by non-admin users
  • Apache/Nginx logs with POST requests to /wp-admin/admin-ajax.php with action=cp_plugins_do_button_job_later_callback

Network Indicators:

  • Unusual outbound connections after plugin installation
  • Traffic to WordPress plugin repository from non-admin IPs

SIEM Query:

source="wordpress.log" AND ("plugin installed" OR "plugin activated") AND user_role!="administrator"

🔗 References

📤 Share & Export