CVE-2020-21999

8.8 HIGH

📋 TL;DR

This vulnerability allows authenticated attackers with default credentials to execute arbitrary operating system commands as root on iWT Ltd FaceSentry Access Control System. Attackers can inject malicious commands through the 'strInIP' parameter in the pingTest PHP script. Organizations using FaceSentry Access Control System version 6.4.8 with default credentials are affected.

💻 Affected Systems

Products:
  • iWT Ltd FaceSentry Access Control System
Versions: 6.4.8
Operating Systems: Linux-based embedded systems
Default Config Vulnerable: ⚠️ Yes
Notes: Requires default credentials to be unchanged. The system must have the pingTest PHP script accessible.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system compromise with root-level access, allowing installation of persistent backdoors, data exfiltration, lateral movement to other systems, and disruption of physical access control operations.

🟠

Likely Case

Attackers gain root shell access to the access control system, potentially disabling security controls, stealing credential data, and using the system as a pivot point to attack other network resources.

🟢

If Mitigated

Limited impact due to network segmentation, strong authentication controls, and monitoring that detects command injection attempts before successful exploitation.

🌐 Internet-Facing: HIGH
🏢 Internal Only: HIGH

🎯 Exploit Status

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

Exploit requires authentication with default credentials. Public exploit code is available on Exploit-DB and other sources.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Unknown

Vendor Advisory: Not publicly available

Restart Required: No

Instructions:

1. Check vendor website for security updates. 2. If patch available, download and apply according to vendor instructions. 3. Verify the fix by testing the vulnerability.

🔧 Temporary Workarounds

Change Default Credentials

all

Immediately change all default passwords and usernames to strong, unique credentials.

Use system administration interface to change credentials

Restrict Access to pingTest Script

linux

Block or restrict access to the vulnerable pingTest.php script using web server configuration.

# Apache: Add to .htaccess or virtual host config
<Files "pingTest.php">
    Order Deny,Allow
    Deny from all
</Files>
# Nginx: Add to server block
location ~ /pingTest\.php$ {
    deny all;
}

🧯 If You Can't Patch

  • Implement strict network segmentation to isolate the access control system from other critical networks
  • Deploy web application firewall (WAF) rules to block command injection patterns targeting the strInIP parameter

🔍 How to Verify

Check if Vulnerable:

Attempt to authenticate with default credentials and test the pingTest.php endpoint with command injection payloads in the strInIP parameter.

Check Version:

Check system administration interface or documentation for version information

Verify Fix Applied:

Test that command injection no longer works after implementing workarounds. Verify default credentials are changed and pingTest script is inaccessible.

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to pingTest.php with shell metacharacters in parameters
  • Multiple failed login attempts followed by successful login with default credentials
  • Unexpected system processes spawned from web server user

Network Indicators:

  • HTTP POST requests containing shell commands in strInIP parameter
  • Outbound connections from access control system to unexpected destinations

SIEM Query:

source="web_server_logs" AND uri="/pingTest.php" AND (param="strInIP" AND value MATCHES "[;&|`$()]" OR value MATCHES "\\.\\./")

🔗 References

📤 Share & Export