CyberPanel 中的命令注入漏洞 CVE-2024-51378:分析与利用
CyberPanel 2.3.7 及更早版本中发现了一个命令注入漏洞(CVE-2024-51378)。攻击者可以通过 /dns/getresetstatus 和 /ftp/getresetstatus 端点绕过身份验证并执行任意命令。该问题位于 dns/views.py 和 ftp/views.py 文件中。这允许攻击者无需授权即可完全控制服务器。
CyberPanel:用途与架构
CyberPanel 是一个基于 OpenLiteSpeed 的开源 Web 托管控制面板。它通过 8090 端口的 Web 界面管理域名、数据库、FTP、电子邮件和 DNS。在托管提供商和开发者中广受欢迎,因为它能与现代技术栈无缝集成。
该漏洞影响安装了该面板的 Ubuntu/Debian 服务器。攻击者可以获得 root 权限,从而危及所有托管服务。
搭建测试环境
要验证该漏洞,请启动一台安装 Ubuntu 的 VPS 并安装易受攻击的 CyberPanel 版本:
- 更新软件包:
apt-get update
- 安装 wget 并下载安装程序:
apt install wget
cd /opt
wget -O installer.sh https://cyberpanel.net/install.sh
- 运行安装:
chmod +x installer.sh
sh installer.sh
重启后,打开 https://<IP>:8090 进行设置。这将创建一个带有易受攻击端点的测试环境。
漏洞技术分析
远程代码执行源于 /dns/getresetstatus 和 /ftp/getresetstatus 处理程序中输入验证不足。查询参数直接传递给 shell 命令而未进行适当转义,从而启用注入。
使用公开 PoC 的示例利用:
git clone https://github.com/refr4g/CVE-2024-51378.git
cd CVE-2024-51378
python3 CVE-2024-51378.py http://target.com:8090 /ftp/getresetstatus
该脚本发送精心构造的请求,在服务器上执行负载。结果是反向 shell 或 root 级命令执行。在测试环境中,这可用于提取 flag 或持久化。
关键攻击向量:
- 无需凭据即可绕过身份验证。
- 使用用户控制输入执行
os.system()。 - 由于面板上下文,提升权限至 root。
影响指标与检测
该漏洞 CVSS 评分为 9.8(严重),影响 2.3.7 补丁前的所有安装。要检测它,请检查 /home/cyberpanel/logs/ 中的日志,寻找可疑的 /getresetstatus 请求,或监控 8090 端口流量。
验证步骤:
- 检查版本:
cyberpanel version。 - 使用 curl 测试端点:
curl 'http://target:8090/ftp/getresetstatus?param=;id'。如果返回uid=0(root),则存在漏洞。 - 使用 Nuclei 等扫描器配合 CVE-2024-51378 模板。
修复措施
- 更新至 2.3.7+ 并应用补丁:按照面板或 CLI 说明操作。
- 限制访问:防火墙限制 8090 端口(例如
ufw allow from IP-range),或使用 VPN。 - 部署 ModSecurity 等 WAF 阻止注入。
- 审计:
grep -r 'getresetstatus' /usr/local/CyberCP/检查自定义修改。
定期更新并遵循最小权限原则有助于降低风险。
关键要点
- 该漏洞允许在 ≤2.3.7 版本中通过
/dns/getresetstatus和/ftp/getresetstatus无需身份验证实现远程代码执行。 - 已发布补丁;生产环境需立即更新。
- 打补丁前使用 PoC 测试环境,避免误报。
- 监控 8090 端口和日志中的命令注入模式。
- 通过防火墙/VPN 限制外部面板访问。
— Editorial Team
暂无评论。