CVE-2025-56399 – laravel-file-manager v3.3.1 中的认证远程代码执行漏洞
🧭 概述
在 laravel-file-manager v3.3.1 及更早版本中存在一个认证远程代码执行(RCE)漏洞,允许具有文件管理器界面访问权限的攻击者在服务器上执行任意代码。通过上传一个包含恶意 PHP 代码的允许的非 PHP 扩展名(例如 .png、.pdf)文件,并将其重命名为 .php 扩展名,或者直接创建并编辑一个 .php 文件,当通过公共 URL 访问该文件时,攻击者即可实现 RCE。
🧱 受影响组件
- 项目:
laravel-file-manager
- 组件: 文件上传/重命名 API
- 受影响版本: v3.3.1 及更早版本
🎯 攻击向量
- 使用具有文件管理器上传或创建文件功能访问权限的账户进行身份验证。
- 通过文件管理器的上传界面或 API 上传一个包含恶意 PHP 代码(例如
<?php system($_GET['c']); ?>)的文件(例如 shell.png)。
- 使用重命名 API 或界面将文件扩展名从 shell.png 更改为 shell.php。
- 通过公共 URL(例如
https://server-ip-address/storage/shell.php?c=id)访问该文件以执行 PHP 载荷。
- 另外,也可以使用“创建文件”功能创建一个文件(例如 shell.php),然后使用编辑功能插入恶意 PHP 代码,并通过公共 URL 访问该文件。
💥 影响
- 远程代码执行(RCE):攻击者可以在 Web 服务器上下文中执行任意命令。
- 系统入侵:根据服务器配置,这可能导致 Web 应用程序和宿主系统的完全入侵。
- 严重风险:对受影响系统的机密性、完整性和可用性造成高影响。
CVSS v3
基础评分:8.8
向量:CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
严重等级:高
🛡️ 推荐的修复措施
- 实现服务器端文件 MIME 类型和魔术字节验证,确保上传文件与其扩展名匹配。
- 强制实施严格的白名单,只允许特定的文件扩展名,并拒绝像 .php 这样的可执行扩展名。
- 限制文件重命名,防止在未经额外验证的情况下更改为可执行扩展名。
- 禁用上传目录中的脚本/PHP 执行。
🙏 致谢
发现并报告者:Chayawat Jeamprasertboon, Thanakorn Boontem, Theethat Thamwasin