
Exploit PoC pour CVE-2018-11736 affectant les versions de Pluck CMS antérieures à 4.7.7-dev2 avec une vulnérabilité de téléchargement de fichiers.
Avertissement ⚠️ : Cet exploit a été développé en Rust principalement comme exercice d'apprentissage de la programmation. Veuillez excuser le manque de rigueur technique ou les motifs de code non idiomatiques. De plus, il ne s'agit pas de ma découverte ; je me suis appuyé sur des rapports officiels pour écrire cet exploit.
Exploit PoC pour CVE-2018-11736 affectant les versions de Pluck CMS antérieures à 4.7.7-dev2. La vulnérabilité réside dans /data/inc/images.php, qui permet à un attaquant de téléverser des fichiers arbitraires. En téléversant un fichier .htaccess malveillant déguisé avec le type MIME image/jpeg, il est possible d'amener le serveur web à interpréter les fichiers .jpg comme des scripts PHP, conduisant à une exécution de code PHP arbitraire.
Vous devez avoir Cargo installé pour compiler main.rs.
cargo build
Et un cookie de session authentifié valide provenant de l'instance Pluck CMS cible est requis :
./CVE-2018-11736 -h
CVE-2018-11736 exploit. Uploads a malicious .htaccess to force the web server to interpret .jpg files as PHP scripts, leading to Remote Code Execution (RCE)
Usage: CVE-2018-11736 --cookie <COOKIE> --base-url <BASE_URL> --hta-path <HTACCESS> --image-path <IMAGE>
Options:
-c, --cookie <COOKIE> Session Cookie (Once you have logged in succesfully). Format: xxxxxxxxxxxx
-u, --base-url <BASE_URL> Base URL (e.g. http://localhost)
-H, --hta-path <HTACCESS> Path to the .htaccess file
-i, --image-path <IMAGE> Path to the fake image file
-h, --help Print help
-V, --version Print version
Pour garantir la reproductibilité et un test sûr, une instance vulnérable de Pluck CMS v4.7.4-dev5 peut être déployée à l'aide de Docker. Pour la déployer, vous devez télécharger le .zip de la version vulnérable :
wget https://github.com/pluck-cms/pluck/archive/refs/tags/4.74-dev5.zip
Ensuite, exécutez la commande suivante dans le même répertoire que les fichiers docker :
docker-compose up -d
L'application web sera disponible à l'adresse http://localhost:8080. Si vous souhaitez ouvrir un TTY dans le conteneur :
docker exec -it pluck-cms bash
Voici le PoC en action, montrant le téléversement de la configuration malveillante et l'exécution de code à distance (RCE).