CVE-2024-25182

9.8 CRITICAL

📋 TL;DR

VvvebJs 1.7.2 contains an unrestricted file upload vulnerability in save.php that allows attackers to upload arbitrary files, including malicious scripts. This affects all deployments using the vulnerable version of this WYSIWYG editor. Attackers can achieve remote code execution by uploading webshells.

💻 Affected Systems

Products:
  • givanz VvvebJs
Versions: 1.7.2 and possibly earlier versions
Operating Systems: All platforms running PHP
Default Config Vulnerable: ⚠️ Yes
Notes: Affects any installation with save.php accessible and file upload functionality enabled.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system compromise via remote code execution, data exfiltration, and persistent backdoor installation.

🟠

Likely Case

Website defacement, malware distribution, or credential theft via uploaded webshells.

🟢

If Mitigated

Limited impact if file uploads are restricted to authenticated users and file types are strictly validated.

🌐 Internet-Facing: HIGH - Publicly accessible save.php endpoint allows unauthenticated file uploads.
🏢 Internal Only: MEDIUM - Internal attackers could still exploit if they have network access.

🎯 Exploit Status

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

Simple HTTP POST request with malicious file upload to save.php endpoint.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Unknown

Vendor Advisory: None found

Restart Required: No

Instructions:

1. Check for updated version from vendor. 2. If no patch, implement workarounds immediately. 3. Remove or restrict access to save.php.

🔧 Temporary Workarounds

Restrict file upload types

all

Implement server-side validation to only allow specific safe file extensions.

# In save.php or upload handler, add: $allowed = ['jpg', 'png', 'gif']; $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); if(!in_array($ext, $allowed)) { die('Invalid file type'); }

Disable save.php or restrict access

all

Block access to the vulnerable endpoint via web server configuration.

# Apache: <Location /path/to/save.php> Require all denied </Location>
# Nginx: location ~ /save\.php$ { deny all; }

🧯 If You Can't Patch

  • Implement Web Application Firewall (WAF) rules to block malicious file uploads
  • Monitor file upload directories for suspicious files and implement file integrity monitoring

🔍 How to Verify

Check if Vulnerable:

Test if save.php accepts file uploads without proper validation by attempting to upload a test file with .php extension.

Check Version:

Check VvvebJs version in package.json or composer.json, or examine source files for version markers.

Verify Fix Applied:

Attempt to upload a file with malicious extension; should be rejected. Check that save.php is no longer accessible or properly validates files.

📡 Detection & Monitoring

Log Indicators:

  • POST requests to save.php with unusual file extensions
  • File uploads with .php, .phtml, .jsp extensions
  • Large number of upload attempts

Network Indicators:

  • HTTP POST to /save.php with file uploads
  • Unusual traffic patterns to upload endpoints

SIEM Query:

source="web_logs" AND uri="/save.php" AND method="POST" AND (file_extension="php" OR file_extension="phtml" OR file_extension="jsp")

🔗 References

📤 Share & Export