CVE-2024-30225

10.0 CRITICAL

📋 TL;DR

CVE-2024-30225 is an unauthenticated PHP object injection vulnerability in the WP Migrate WordPress plugin. It allows remote attackers to execute arbitrary code on affected WordPress sites by exploiting insecure deserialization. All WordPress sites using WP Migrate versions up to 2.6.10 are affected.

💻 Affected Systems

Products:
  • WP Migrate WordPress plugin
Versions: All versions up to and including 2.6.10
Operating Systems: Any OS running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Affects all WordPress installations with vulnerable plugin versions enabled.

⚠️ 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

Complete server compromise leading to data theft, ransomware deployment, or website defacement.

🟠

Likely Case

Remote code execution allowing attackers to install backdoors, steal sensitive data, or pivot to other systems.

🟢

If Mitigated

Attack blocked at WAF/web application firewall level with proper input validation rules.

🌐 Internet-Facing: HIGH - Exploitable without authentication from any internet-facing WordPress site.
🏢 Internal Only: MEDIUM - Still exploitable from internal networks but requires internal access.

🎯 Exploit Status

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

Public exploit details available on Patchstack; trivial exploitation for attackers with basic PHP knowledge.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.6.11 or later

Vendor Advisory: https://patchstack.com/database/vulnerability/wp-migrate-db-pro/wordpress-wp-migrate-plugin-2-6-10-unauthenticated-php-object-injection-vulnerability

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins > Installed Plugins. 3. Find WP Migrate plugin. 4. Click 'Update Now' if update available. 5. If no update available, deactivate and delete plugin immediately.

🔧 Temporary Workarounds

Disable WP Migrate plugin

all

Temporarily disable the vulnerable plugin until patched version is available.

wp plugin deactivate wp-migrate-db-pro

WAF rule blocking

all

Add WAF rules to block suspicious serialized data in requests.

# Add rule to block PHP object injection patterns in ModSecurity: SecRule ARGS "@rx O:[0-9]+:" "id:1001,phase:2,deny,msg:'PHP Object Injection Attempt'"
# Cloudflare WAF: Create rule blocking requests containing 'O:' followed by numbers and colon

🧯 If You Can't Patch

  • Immediately disable or remove the WP Migrate plugin from all WordPress installations.
  • Implement strict WAF rules to block PHP serialization patterns and monitor for exploitation attempts.

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin panel > Plugins > Installed Plugins for WP Migrate version. If version is 2.6.10 or lower, you are vulnerable.

Check Version:

wp plugin list --name=wp-migrate-db-pro --field=version

Verify Fix Applied:

Verify WP Migrate plugin version is 2.6.11 or higher in WordPress admin panel.

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to wp-admin/admin-ajax.php with serialized data
  • PHP errors related to unserialize() or object injection
  • Unexpected plugin activation/deactivation logs

Network Indicators:

  • HTTP POST requests containing serialized PHP objects (O:8:, O:16: patterns)
  • Requests to vulnerable endpoints without authentication

SIEM Query:

source="web_logs" AND (uri="*admin-ajax.php*" OR uri="*wp-admin*" OR uri="*wp-json*") AND (http_method="POST") AND (request_body="*O:[0-9]+:*" OR request_body="*s:[0-9]+:*")

🔗 References

📤 Share & Export