CVE-2021-24189

8.8 HIGH

📋 TL;DR

This vulnerability allows low-privileged WordPress users (like subscribers or contributors) to install and activate arbitrary plugins from the official WordPress repository. Attackers can exploit this to install vulnerable plugins that could lead to remote code execution. It affects WordPress sites using the Captchinoo plugin before version 2.4.

💻 Affected Systems

Products:
  • Captchinoo, Google recaptcha for admin login page WordPress plugin
Versions: All versions before 2.4
Operating Systems: All
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, potentially compromising the entire server.

🟠

Likely Case

Attackers install malicious plugins to establish persistence, steal data, or create backdoors for further exploitation.

🟢

If Mitigated

With proper user role management and monitoring, 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 proof-of-concept code is available.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.4

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

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins > Installed Plugins. 3. Find 'Captchinoo' plugin. 4. Click 'Update Now' if available, or delete and reinstall version 2.4+ from repository.

🔧 Temporary Workarounds

Disable vulnerable AJAX endpoint

all

Remove or restrict access to the vulnerable AJAX action in WordPress functions

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

Restrict user capabilities

all

Temporarily remove plugin installation capabilities from low-privileged roles

Use WordPress role editor plugin or add to functions.php: remove_cap('subscriber', 'install_plugins'); remove_cap('contributor', 'install_plugins');

🧯 If You Can't Patch

  • Immediately disable the Captchinoo plugin completely
  • Implement strict user role management and audit all low-privileged accounts

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin panel > Plugins > Captchinoo version. If version is below 2.4, site is vulnerable.

Check Version:

wp plugin list --name=captchinoo --field=version (WP-CLI) or check WordPress admin plugins page

Verify Fix Applied:

Confirm Captchinoo plugin version is 2.4 or higher in WordPress admin panel.

📡 Detection & Monitoring

Log Indicators:

  • Unusual plugin installation events
  • AJAX requests to 'cp_plugins_do_button_job_later_callback' from low-privileged users
  • Multiple plugin activation events in short time

Network Indicators:

  • HTTP POST requests to /wp-admin/admin-ajax.php with action=cp_plugins_do_button_job_later_callback

SIEM Query:

source="wordpress.log" AND ("cp_plugins_do_button_job_later_callback" OR "plugin installed" OR "plugin activated") AND user_role IN ("subscriber", "contributor")

🔗 References

📤 Share & Export