
Preuve de concept d'exploit pour CVE-2024-23724 : escalade de privilèges via le téléchargement malveillant de photo de profil SVG dans Ghost CMS. Inclut un script automatisé de configuration et d'attaque.
Pour tester la vulnérabilité, nous avons besoin de deux comptes : un compte avec le rôle d'administrateur (propriétaire) et un compte ayant le rôle de contributeur. Dans Ghost CMS, il faut d'abord accéder au panneau d'administration pour créer le compte propriétaire, puis, à partir de ce compte, inviter un contributeur pour qu'il crée son propre compte. Cependant, dans Ghost, la seule manière d'inviter un contributeur est d'envoyer un lien d'invitation par e-mail, ce qui nécessite un service de livraison d'e-mails pour envoyer le mail au compte du contributeur. Afin de faciliter les choses, nous avons créé un compte Mailgun, ajouté un contributeur à Ghost, puis créé un fichier de dump de la base de données dans l'état où nous l'avions. Dans notre configuration Docker Compose, nous nous assurons d'abord de restaurer la base de données à partir du dump avant de démarrer Ghost, de sorte que vous n'ayez pas besoin d'un service de livraison d'e-mails pour tester cette vulnérabilité. Cependant, si vous souhaitez démarrer avec une installation propre et ne pas utiliser le dump de base de données fourni, vous pouvez utiliser le Docker Compose dans le dossier manual-setup pour démarrer une installation Ghost propre. Ci-dessous, vous trouverez les étapes pour configurer Mailgun (un service de livraison d'e-mails que nous avons utilisé) et le faire fonctionner avec Ghost.
Pour cette installation, voici les informations d'identification de l'administrateur et du contributeur à utiliser pour se connecter:
Pour commencer, vous devez créer un compte Mailgun. Une fois votre compte créé, obtenez vos identifiants SMTP. Après avoir obtenu vos identifiants, placez-les dans le fichier config.development.json en suivant le même format que celui montré dans le fichier config.example.json.
Voici un guide étape par étape :
config.example.json et renommez-le en config.development.json.config.development.json. Cela garantira que votre environnement de développement est correctement configuré pour envoyer des e-mails via Mailgun.Vous pouvez lancer l'installation que vous avez choisie en utilisant la commande suivante :
docker-compose up
Pour tester l'attaque suivez les étapes suivantes :
python generate-malicious-svg.py -u [USERNAME] -p [PASSWORD] -t http://localhost
Pour l'installation automatique, la commande est :
python generate-malicious-svg.py -u [email protected] -p ZtXfMq2FaRHGm@! -t http://localhost
Cette commande génère un fichier SVG malveillant nommé tenant-takeover.svg dans le répertoire courant.
Connectez-vous à l'interface d'administration de Ghost en utilisant les identifiants du compte de contributeur que vous avez créé. Pour cela, visitez http://localhost:3001/ghost et connectez-vous avec les identifiants du compte de contributeur.
Accédez à la page de modification de votre profil en cliquant sur votre photo de profil en bas à gauche de l'écran, puis en cliquant sur le bouton "Your profile".
Cliquez sur l'icone de profile pour changer votre photo de profile. Sélectionnez le fichier SVG malveillant que vous avez généré à l'étape 1.
Enregistrez les modifications en cliquant sur le bouton "Save & close". Vous pouvez rafrachir la page pour vérifier que la photo de profile a été changée.
Vous pouvez maintenant vous déconnecter du compte de contributeur et vous connecter au compte de l'administrateur. Sous http://localhost:3001/ghost/#/settings/staff?tab=contributors, vous pouvez voir que la photo de profile du contributeur a été changée. Si vous clickez droit sur la photo de profile, et vous ouvrez l'image dans un nouvel onglet, cela declenchera l'attaque. Vous pouvez maintenant revenir à http://localhost:3001/ghost/#/settings/staff et vous verrez que le contributeur est maintenant propriétaire du blog et vous êtes devenu un administrateur.
Nous avons réalisé une vidéo qui décrit en détail tout le processus et les étapes nécessaires pour implémenter la CVE. Cette vidéo sert de guide visuel pour mieux comprendre notre démarche et les actions réalisées.
Lien vers la vidéo : Cliquez ici pour regarder la vidéo
N'hésitez pas à consulter cette vidéo pour un aperçu complet du projet et des étapes techniques suivies.