CVE-2021-24728

8.8 HIGH

📋 TL;DR

This vulnerability allows authenticated attackers to perform SQL injection attacks in the Paid Member Subscriptions WordPress plugin. Attackers can manipulate database queries through unsanitized order and orderby parameters, potentially accessing or modifying sensitive data. WordPress sites using vulnerable versions of this plugin are affected.

💻 Affected Systems

Products:
  • Paid Member Subscriptions WordPress Plugin
Versions: All versions before 2.4.2
Operating Systems: Any OS running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Requires authenticated user access to exploit. Affects both Members and Payments pages.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete database compromise including user credentials, payment information, and administrative access leading to site takeover.

🟠

Likely Case

Unauthorized access to member data, payment records, and potential privilege escalation within the WordPress installation.

🟢

If Mitigated

Limited data exposure if proper input validation and database permissions are enforced.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

Exploitation requires authenticated access. SQL injection is well-documented and easily weaponized.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.4.2

Vendor Advisory: https://plugins.trac.wordpress.org/changeset/2566399/paid-member-subscriptions

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins → Installed Plugins. 3. Find 'Paid Member Subscriptions'. 4. Click 'Update Now' if available. 5. Alternatively, download version 2.4.2+ from WordPress repository and replace plugin files.

🔧 Temporary Workarounds

Input Validation WAF Rule

all

Add web application firewall rules to block SQL injection attempts on order and orderby parameters

# Example ModSecurity rule: SecRule ARGS:order|ARGS:orderby "@detectSQLi" "id:1001,phase:2,deny,status:403"

Plugin Deactivation

linux

Temporarily disable the plugin until patched

wp plugin deactivate paid-member-subscriptions

🧯 If You Can't Patch

  • Restrict plugin access to trusted users only using role-based access controls
  • Implement network segmentation to isolate the WordPress instance from sensitive databases

🔍 How to Verify

Check if Vulnerable:

Check plugin version in WordPress admin under Plugins → Installed Plugins. If version is below 2.4.2, you are vulnerable.

Check Version:

wp plugin get paid-member-subscriptions --field=version

Verify Fix Applied:

Verify plugin version is 2.4.2 or higher. Test parameter inputs with SQL injection payloads to confirm sanitization.

📡 Detection & Monitoring

Log Indicators:

  • Unusual SQL queries in database logs
  • Multiple failed authentication attempts followed by parameter manipulation
  • Unexpected ORDER BY clauses in WordPress queries

Network Indicators:

  • HTTP requests with SQL injection patterns in order/orderby parameters
  • Unusual database connection patterns from web server

SIEM Query:

source="web_logs" AND ("order=" OR "orderby=") AND ("UNION" OR "SELECT" OR "--" OR "' OR '1'='1")

🔗 References

📤 Share & Export