CVE-2024-49658

9.9 CRITICAL

📋 TL;DR

This vulnerability allows unauthenticated attackers to upload arbitrary files, including web shells, to WordPress servers running the vulnerable WooCommerce Custom Profile Picture plugin. Attackers can achieve remote code execution and full server compromise. All WordPress sites using version 1.0 or earlier of this plugin are affected.

💻 Affected Systems

Products:
  • WordPress WooCommerce Custom Profile Picture Plugin
Versions: 1.0 and earlier
Operating Systems: All operating systems running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Requires WordPress with WooCommerce installed. No authentication required for exploitation.

⚠️ 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 takeover with attacker gaining administrative access, data exfiltration, ransomware deployment, and use as pivot point for lateral movement.

🟠

Likely Case

Web shell upload leading to website defacement, data theft, cryptocurrency mining, or participation in botnets.

🟢

If Mitigated

File upload attempts blocked at WAF level with no successful exploitation.

🌐 Internet-Facing: HIGH
🏢 Internal Only: LOW

🎯 Exploit Status

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

Simple HTTP POST request with malicious file upload. Public exploit scripts available.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: N/A

Vendor Advisory: https://patchstack.com/database/vulnerability/woo-custom-profile-picture/wordpress-woocommerce-custom-profile-picture-plugin-1-0-arbitrary-file-upload-vulnerability?_s_id=cve

Restart Required: No

Instructions:

1. Immediately remove the WooCommerce Custom Profile Picture plugin from all WordPress installations. 2. Search for and delete any suspicious files uploaded to wp-content/uploads/ directory. 3. Consider alternative profile picture plugins with security reviews.

🔧 Temporary Workarounds

WAF File Upload Filtering

all

Configure web application firewall to block file uploads with dangerous extensions to the vulnerable endpoint.

ModSecurity rule: SecRule REQUEST_URI "@contains /wp-content/plugins/woo-custom-profile-picture/" "chain,id:1001,phase:2,deny,status:403,msg:'Blocking vulnerable plugin upload'"
SecRule FILES "\.(php|phtml|php3|php4|php5|php7|phar|asp|aspx|jsp|exe|sh|pl|cgi|py)$" "t:lowercase"

Directory Permissions Restriction

linux

Set wp-content/uploads directory to read-only for web server user.

chmod 444 /path/to/wordpress/wp-content/uploads/
chown root:root /path/to/wordpress/wp-content/uploads/

🧯 If You Can't Patch

  • Immediately disable or remove the plugin from all WordPress installations.
  • Implement strict file upload validation at application level for all upload functionality.

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin panel > Plugins > Installed Plugins for 'WooCommerce Custom Profile Picture' version 1.0 or earlier.

Check Version:

wp plugin list --name='woo-custom-profile-picture' --field=version

Verify Fix Applied:

Confirm plugin is removed from wp-content/plugins/ directory and no longer appears in WordPress admin.

📡 Detection & Monitoring

Log Indicators:

  • HTTP POST requests to /wp-content/plugins/woo-custom-profile-picture/upload.php with file uploads
  • Files with .php, .phtml, .phar extensions created in wp-content/uploads/

Network Indicators:

  • Unusual outbound connections from web server to external IPs
  • Large file uploads to plugin endpoint

SIEM Query:

source="web_server" AND (uri="*woo-custom-profile-picture*" AND method="POST") OR (file_extension IN ("php", "phtml", "phar") AND file_path="*/wp-content/uploads/*")

🔗 References

📤 Share & Export