CVE-2022-33114

7.2 HIGH

📋 TL;DR

CVE-2022-33114 is a SQL injection vulnerability in Jfinal CMS v5.1.0 that allows attackers to execute arbitrary SQL commands via the attrVal parameter in the /jfinal_cms/system/dict/list endpoint. This affects all organizations running vulnerable versions of Jfinal CMS, potentially exposing database contents and system integrity.

💻 Affected Systems

Products:
  • Jfinal CMS
Versions: v5.1.0
Operating Systems: All platforms running Jfinal CMS
Default Config Vulnerable: ⚠️ Yes
Notes: The vulnerability exists in the default installation and requires no special configuration to be exploitable.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete database compromise leading to data theft, data manipulation, privilege escalation, and potential remote code execution through database functions.

🟠

Likely Case

Unauthorized data extraction from the CMS database, 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 internet-facing instances immediately vulnerable to automated attacks.
🏢 Internal Only: MEDIUM - Internal instances are still vulnerable but have reduced attack surface compared to internet-facing deployments.

🎯 Exploit Status

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

Exploitation requires authentication to access the /system/dict/list endpoint, but SQL injection payloads are straightforward to craft.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: v5.1.1 or later

Vendor Advisory: https://github.com/jflyfox/jfinal_cms/issues/38

Restart Required: Yes

Instructions:

1. Backup your current installation and database. 2. Download the latest version from the official repository. 3. Replace vulnerable files with patched versions. 4. Restart the application server. 5. Verify the fix by testing the vulnerable endpoint.

🔧 Temporary Workarounds

Input Validation Filter

all

Implement server-side input validation to sanitize the attrVal parameter before processing.

Implement parameter validation in the controller handling /system/dict/list to allow only expected characters

WAF Rule

all

Deploy web application firewall rules to block SQL injection patterns targeting the vulnerable endpoint.

Configure WAF to detect and block SQL injection patterns in requests to /jfinal_cms/system/dict/list

🧯 If You Can't Patch

  • Implement strict network access controls to limit access to the vulnerable endpoint to authorized users only.
  • Deploy database monitoring to detect unusual SQL queries and implement database-level protections like prepared statements.

🔍 How to Verify

Check if Vulnerable:

Test the /jfinal_cms/system/dict/list endpoint with SQL injection payloads in the attrVal parameter and observe if database errors or unexpected results occur.

Check Version:

Check the application version in the admin panel or review the project configuration files for version information.

Verify Fix Applied:

After patching, attempt the same SQL injection tests and verify they are properly rejected or sanitized without database errors.

📡 Detection & Monitoring

Log Indicators:

  • Unusual SQL queries in database logs
  • Multiple failed login attempts followed by access to /system/dict/list
  • HTTP requests containing SQL keywords like UNION, SELECT, or DROP in the attrVal parameter

Network Indicators:

  • Unusual outbound database connections from the application server
  • HTTP traffic patterns showing repeated access to the vulnerable endpoint with varying parameters

SIEM Query:

source="web_server" AND uri="/jfinal_cms/system/dict/list" AND (param="attrVal" AND value CONTAINS "UNION" OR value CONTAINS "SELECT" OR value CONTAINS "--")

🔗 References

📤 Share & Export