CVE-2021-40669

9.8 CRITICAL

📋 TL;DR

This SQL injection vulnerability in Wuzhi CMS 4.1.0 allows attackers to execute arbitrary SQL commands through the keywords parameter in the admin interface. This affects all deployments running the vulnerable version, potentially compromising the entire database and application. Attackers can exploit this to steal, modify, or delete sensitive data.

💻 Affected Systems

Products:
  • Wuzhi CMS
Versions: 4.1.0
Operating Systems: All platforms running PHP
Default Config Vulnerable: ⚠️ Yes
Notes: Requires admin access to reach the vulnerable endpoint, but SQL injection can be exploited by any user with admin privileges or through session hijacking.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete database compromise leading to data theft, data destruction, privilege escalation to admin, and potential remote code execution via database functions.

🟠

Likely Case

Unauthorized data access and extraction, including user credentials, sensitive content, and configuration data.

🟢

If Mitigated

Limited impact with proper input validation and parameterized queries preventing SQL injection.

🌐 Internet-Facing: HIGH - The vulnerable endpoint is accessible via web interface, making it directly exploitable from the internet.
🏢 Internal Only: HIGH - Even internal attackers or compromised accounts can exploit this vulnerability to escalate privileges.

🎯 Exploit Status

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

Exploitation requires admin authentication, but SQL injection payloads are well-documented and easy to craft. The GitHub issue shows proof of concept.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Versions after 4.1.0

Vendor Advisory: https://github.com/wuzhicms/wuzhicms/issues/196

Restart Required: No

Instructions:

1. Upgrade to the latest version of Wuzhi CMS. 2. Apply input validation and parameterized queries to the keywords parameter. 3. Review and sanitize all user inputs in the application.

🔧 Temporary Workarounds

Input Validation Filter

all

Add server-side validation to reject SQL keywords and special characters in the keywords parameter.

Modify coreframe/app/promote/admin/index.php to add input sanitization before SQL query execution

Web Application Firewall Rules

all

Deploy WAF rules to block SQL injection patterns targeting the keywords parameter.

Add WAF rule: Block requests containing SQL keywords (SELECT, UNION, INSERT, etc.) in the keywords parameter

🧯 If You Can't Patch

  • Implement strict input validation and parameterized queries for all database interactions.
  • Restrict admin access to trusted IP addresses only and implement multi-factor authentication.

🔍 How to Verify

Check if Vulnerable:

Test the keywords parameter with SQL injection payloads like ' OR '1'='1 and observe if database errors or unexpected results occur.

Check Version:

Check the CMS version in the admin panel or review the version file in the installation directory.

Verify Fix Applied:

Attempt the same SQL injection tests and verify they are rejected or properly sanitized without affecting database queries.

📡 Detection & Monitoring

Log Indicators:

  • SQL syntax errors in application logs
  • Unusual database queries from the promote/admin endpoint
  • Multiple failed login attempts followed by SQL injection attempts

Network Indicators:

  • HTTP POST requests to /coreframe/app/promote/admin/index.php with SQL keywords in parameters
  • Unusual database response times or error messages in HTTP responses

SIEM Query:

source="web_logs" AND uri="/coreframe/app/promote/admin/index.php" AND (keywords="*SELECT*" OR keywords="*UNION*" OR keywords="*OR*1*1*")

🔗 References

📤 Share & Export