CVE-2024-29275

9.8 CRITICAL

📋 TL;DR

This critical SQL injection vulnerability in SeaCMS version 12.9 allows unauthenticated attackers to execute arbitrary SQL commands via the id parameter. Attackers can potentially read, modify, or delete database content, execute system commands, and compromise the entire web application. All SeaCMS 12.9 installations with default configurations are affected.

💻 Affected Systems

Products:
  • SeaCMS
Versions: Version 12.9
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: All default installations of SeaCMS 12.9 are vulnerable. The vulnerability exists in class.php file via the id parameter.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system compromise including database destruction, remote code execution leading to full server takeover, and sensitive data exfiltration.

🟠

Likely Case

Database manipulation, sensitive information disclosure (user credentials, personal data), and potential privilege escalation.

🟢

If Mitigated

Limited impact with proper input validation, parameterized queries, and web application firewall rules blocking SQL injection patterns.

🌐 Internet-Facing: HIGH - Unauthenticated remote exploitation makes internet-facing systems immediate targets.
🏢 Internal Only: MEDIUM - Internal systems still vulnerable but require network access; risk increases if internal users can access the vulnerable endpoint.

🎯 Exploit Status

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

SQL injection via GET parameter makes exploitation straightforward. Public GitHub issues demonstrate the vulnerability.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Version after 12.9 (check latest release)

Vendor Advisory: https://github.com/seacms-net/CMS/issues/15

Restart Required: No

Instructions:

1. Backup your database and application files. 2. Download the latest SeaCMS version from the official repository. 3. Replace the vulnerable class.php file with the patched version. 4. Verify the fix by testing the vulnerable endpoint.

🔧 Temporary Workarounds

Input Validation Filter

all

Add input validation to sanitize the id parameter before processing

Modify class.php to add: if(!is_numeric($_GET['id'])) { die('Invalid input'); }

WAF Rule Implementation

all

Deploy web application firewall rules to block SQL injection patterns

Add WAF rule: SecRule ARGS:id "@detectSQLi" "id:1001,phase:2,deny"

🧯 If You Can't Patch

  • Implement strict input validation and parameterized queries in the vulnerable code
  • Deploy a web application firewall with SQL injection detection rules

🔍 How to Verify

Check if Vulnerable:

Test the vulnerable endpoint with SQL injection payloads: http://target/class.php?id=1' OR '1'='1

Check Version:

Check SeaCMS version in admin panel or readme files

Verify Fix Applied:

Attempt SQL injection payloads against the patched endpoint; should return error or no database manipulation

📡 Detection & Monitoring

Log Indicators:

  • Unusual SQL error messages in web logs
  • Multiple requests with SQL keywords in id parameter
  • Database error logs showing malformed queries

Network Indicators:

  • HTTP requests containing SQL injection patterns in GET parameters
  • Unusual database connection patterns from web server

SIEM Query:

source="web_logs" AND (uri="*class.php*" AND query="*id=*'*" OR query="*id=*%27*")

🔗 References

📤 Share & Export