CVE-2025-31002

9.1 CRITICAL

📋 TL;DR

CVE-2025-31002 is an arbitrary file upload vulnerability in the Squeeze WordPress plugin that allows attackers to upload malicious files to vulnerable websites. This affects all WordPress sites running Squeeze plugin versions up to 1.6. Attackers can exploit this to upload webshells or other malicious files and potentially gain full control of affected websites.

💻 Affected Systems

Products:
  • WordPress Squeeze Plugin
Versions: All versions up to and including 1.6
Operating Systems: All operating systems running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Affects all WordPress installations with the vulnerable Squeeze plugin version, regardless of WordPress version or configuration.

⚠️ 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 website compromise leading to data theft, defacement, malware distribution, or ransomware deployment.

🟠

Likely Case

Attackers upload webshells to gain persistent access, then install backdoors, steal data, or use the site for phishing/malware distribution.

🟢

If Mitigated

Limited impact if file uploads are restricted at web server level or WAF blocks malicious upload patterns.

🌐 Internet-Facing: HIGH - WordPress plugins are typically internet-facing and this vulnerability requires no authentication.
🏢 Internal Only: MEDIUM - Internal WordPress sites could still be compromised if attackers gain internal network access.

🎯 Exploit Status

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

Public exploit details available on Patchstack. Simple HTTP POST requests with malicious files can exploit this vulnerability.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 1.7 or later

Vendor Advisory: https://patchstack.com/database/wordpress/plugin/squeeze/vulnerability/wordpress-squeeze-plugin-1-6-arbitrary-file-upload-vulnerability?_s_id=cve

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins → Installed Plugins. 3. Find Squeeze plugin. 4. Click 'Update Now' if update available. 5. If no update, deactivate and delete plugin, then install fresh version 1.7+ from WordPress repository.

🔧 Temporary Workarounds

Web Server File Upload Restrictions

all

Configure web server to block upload of executable file types

# For Apache .htaccess:
<FilesMatch "\.(php|phtml|php3|php4|php5|php7|phps|php8|pl|py|jsp|asp|aspx|sh|cgi|exe|dll|bat|cmd|ps1|psm1|psd1|ps1xml|psc1|pssc|reg|scf|scr|vbs|vbe|wsf|wsh|wsc|msi|msu|msp|mst|jar|war|ear|class|jspx|jspf|jsw|jsv|jspf|jtml|swf|htaccess|htpasswd|ini|log|config|sql|bak|backup|old|temp|tmp)$">
    Order Allow,Deny
    Deny from all
</FilesMatch>
# For Nginx:
location ~* \.(php|phtml|php3|php4|php5|php7|phps|php8|pl|py|jsp|asp|aspx|sh|cgi|exe|dll|bat|cmd|ps1|psm1|psd1|ps1xml|psc1|pssc|reg|scf|scr|vbs|vbe|wsf|wsh|wsc|msi|msu|msp|mst|jar|war|ear|class|jspx|jspf|jsw|jsv|jspf|jtml|swf|htaccess|htpasswd|ini|log|config|sql|bak|backup|old|temp|tmp)$ {
    deny all;
}

WordPress Security Plugin Configuration

all

Use security plugins to restrict file uploads and monitor for malicious activity

🧯 If You Can't Patch

  • Immediately deactivate and remove the Squeeze plugin from all WordPress installations
  • Implement strict web application firewall (WAF) rules to block file uploads to the plugin's vulnerable endpoints

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin panel → Plugins → Installed Plugins for Squeeze plugin version. If version is 1.6 or lower, you are vulnerable.

Check Version:

# From WordPress root directory:
grep -r "Version:" wp-content/plugins/squeeze/* | head -1
# Or check WordPress admin panel Plugins page

Verify Fix Applied:

After updating, verify Squeeze plugin shows version 1.7 or higher in WordPress admin panel.

📡 Detection & Monitoring

Log Indicators:

  • HTTP POST requests to /wp-content/plugins/squeeze/ upload endpoints
  • File uploads with suspicious extensions (.php, .phtml, .exe, etc.)
  • Unauthorized file creation in upload directories
  • Webshell access patterns in access logs

Network Indicators:

  • POST requests to /wp-content/plugins/squeeze/ with file uploads
  • Unusual outbound connections from WordPress server after file uploads

SIEM Query:

source="web_access_logs" AND (uri_path="/wp-content/plugins/squeeze/" AND http_method="POST" AND (file_extension="php" OR file_extension="phtml" OR file_extension="exe" OR file_extension="jsp"))

🔗 References

📤 Share & Export