CVE-2023-46474
| CVSS v3.1 Vector | CVSS v3.1 Score |
|---|---|
| AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H | 9.1 |
由 Devensys Cybersecurity 的 Marcus Reynaud 在渗透测试过程中发现
脚本 pmb/admin/convert/start_import.php 存在 不受限制的文件上传 类型的漏洞,攻击者可借此在服务器上执行任意代码。

攻击者必须先获得该平台的管理访问权限,才能使用此功能。
该 PHP 脚本不检查用户上传文件的扩展名,并将其存储在 Web 服务器可访问的目录中,同时保留其扩展名。因此,攻击者可以上传一个 PHP 脚本,然后通过访问其上传位置来执行该脚本。
可以通过以下方式复现此行为:
我们发送一个 .php 文件,其中包含我们想要在系统上执行的代码。此处,我们将执行系统命令 id。

通过观察响应,我们可以获取文件在服务器上写入后的名称。

要执行我们的代码,只需使用浏览器访问 /pmb/temp/[文件名].php。

命令的执行结果由服务器返回。
此漏洞的原因是文件在写入磁盘之前缺乏控制:

要修复此漏洞,需要对用户上传的文件实施扩展名控制。
我们建议使用白名单机制,仅允许特定的文件扩展名。
您也可以在将文件写入磁盘时省略扩展名(考虑到这是临时存储)。
还可以将文件写入 Web 服务器作用域之外的目录,这样文件将无法通过互联网访问,代码也就无法被执行。
7.5.4 及更高版本不受此漏洞影响,该脚本已被完全重写。