CVE-2021-20104

8.1 HIGH

📋 TL;DR

Machform versions before 16 allow unauthenticated attackers to execute arbitrary code on the server by uploading malicious file attachments through forms. This affects all organizations using vulnerable Machform installations for form processing.

💻 Affected Systems

Products:
  • Machform
Versions: All versions prior to 16
Operating Systems: All platforms running Machform
Default Config Vulnerable: ⚠️ Yes
Notes: Affects upload.php component handling file attachments in forms.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system compromise allowing attackers to install malware, steal data, pivot to internal networks, or establish persistent backdoors.

🟠

Likely Case

Webshell deployment leading to data theft, defacement, or use as part of a botnet for further attacks.

🟢

If Mitigated

Limited impact with proper network segmentation and file upload restrictions, potentially only affecting the web application.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

Exploitation requires sending specially crafted file uploads to upload.php without authentication.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Version 16

Vendor Advisory: https://www.machform.com/blog-machform-16-released/

Restart Required: No

Instructions:

1. Backup current installation and data. 2. Download Machform 16 from vendor. 3. Replace all files with new version. 4. Verify functionality of forms.

🔧 Temporary Workarounds

Restrict file upload types

all

Configure web server to block execution of uploaded files in upload directories

# Apache: Add to .htaccess in upload directory
<FilesMatch "\.(php|phtml|php3|php4|php5|phps|inc)">
    Order Allow,Deny
    Deny from all
</FilesMatch>
# Nginx: Add to server block
location ~* \.(php|phtml|php3|php4|php5|phps|inc)$ {
    deny all;
}

Disable upload.php temporarily

linux

Rename or remove upload.php file to prevent exploitation

mv upload.php upload.php.disabled
rm upload.php

🧯 If You Can't Patch

  • Implement strict WAF rules to block malicious file upload patterns
  • Isolate Machform server in DMZ with strict outbound traffic controls

🔍 How to Verify

Check if Vulnerable:

Check if upload.php exists and Machform version is below 16 in admin panel or version files

Check Version:

Check /admin/ page or look for version in source files

Verify Fix Applied:

Confirm version shows 16 or higher in admin interface and test file upload functionality

📡 Detection & Monitoring

Log Indicators:

  • Unusual file uploads to upload.php with PHP extensions
  • Multiple failed upload attempts with suspicious filenames
  • POST requests to upload.php with executable content

Network Indicators:

  • HTTP POST requests to /upload.php with file uploads
  • Outbound connections from web server to unknown IPs after uploads

SIEM Query:

source="web_logs" AND uri="/upload.php" AND (method="POST" OR file_extension="php")

🔗 References

📤 Share & Export