
Vulnérabilité Zip Slip dans PluckCMS 4.7.20 ayant conduit à une RCE
Ce rapport documente une vulnérabilité de sécurité critique découverte dans PluckCMS qui permet à des attaquants authentifiés d'exécuter du code à distance via un vecteur d'attaque Zip Slip. La vulnérabilité existe dans la fonctionnalité de téléchargement de modules et peut être exploitée en téléchargeant une archive ZIP spécialement conçue contenant du code PHP malveillant.
4.7.20
Type de vulnérabilité : Zip Slip menant à une exécution de code à distance (RCE)
Composant affecté : Système de gestion des modules (Options → Gérer les modules)
Vecteur d'attaque : Téléchargement de fichier ZIP malveillant
Authentification requise : Oui (accès au panneau d'administration)
Sévérité : Critique
La vulnérabilité provient d'une validation et d'un assainissement insuffisants du contenu de l'archive ZIP lors du processus de téléchargement du module. PluckCMS permet aux administrateurs de télécharger des modules au format ZIP sans valider correctement les chemins de fichiers contenus dans l'archive. Cela permet à un attaquant de créer un fichier ZIP malveillant qui exploite les vulnérabilités de traversée de chemin, permettant le placement arbitraire de fichiers sur le système de fichiers du serveur.
Lors de l'extraction d'une archive ZIP, l'application ne vérifie pas que les fichiers extraits restent dans la structure de répertoires prévue. Un attaquant peut exploiter cette faiblesse pour écrire des fichiers PHP malveillants dans des emplacements accessibles via le Web, exécutant ainsi du code arbitraire sur le serveur.
La vulnérabilité peut être reproduite en utilisant l'environnement suivant :
git clone https://github.com/pluck-cms/pluck.git
cd pluck
ddev config --project-type=php --docroot=.
ddev start
URL hébergée : http://pluck.ddev.site
Une charge utile de preuve de concept démontrant la capacité d'exécution de commandes a été utilisée lors des tests. La charge utile exploite les fonctions d'exécution système de PHP pour exécuter des commandes du système d'exploitation.
<?php
$fn = "sys" . "tem";
(string) $fn("id");
?>
L'exploitation réussie de cette vulnérabilité permet à un attaquant authentifié disposant d'un accès administratif de :
Bien que la vulnérabilité nécessite une authentification administrative, elle représente un risque de sécurité critique car elle fournit un chemin direct vers un compromis complet du système.