Share
## https://sploitus.com/exploit?id=9CBA70E1-C0CB-5C44-92B8-0DC211C7EBA8
# Installation

## Installation automatique( recommandée)

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:

- Admin:
  - Email: blog.boss@company.com
  - Mot de passe: ZtXfMq2FaRHGm@!
- Contributeur:
  - Email: malicious.contributor@company.com
  - Mot de passe: ZtXfMq2FaRHGm@!

## Installation manuelle avec Mailgun

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 :

1. Créez un compte Mailgun sur [Mailgun](https://www.mailgun.com/).
2. Accédez à la section des identifiants SMTP dans votre tableau de bord Mailgun.
3. Copiez vos identifiants SMTP.
4. Dupliquez le fichier `config.example.json` et renommez-le en `config.development.json`.
5. Remplissez vos identifiants SMTP dans le fichier `config.development.json`. Cela garantira que votre environnement de développement est correctement configuré pour envoyer des e-mails via Mailgun.
6. Si vous avez créé un compte Mailgun, le domaine Mailgun que vous aurez par défaut est un domaine sandbox, ce qui signifie que vous devez autoriser l'email du contributeur que vous souhaitez utiliser pour recevoir le lien d'invitation du contributeur, vous pouvez faire ca dans le tableau de bord Mailgun sous (barre latérale gauche) Send > Sending > Overview. En effet, Mailgun n'enverra des e-mails qu'aux destinataires autorisés lorsque vous utilisez un domaine sandbox. Lorsque vous ajoutez un destinataire autorisé, vous recevrez un e-mail pour confirmer l'autorisation. Après avoir confirmé l'autorisation, Ghost peut maintenant envoyer des e-mails à ce destinataire à travers Mailgun.
7. Après avoir créé un compte Owner dans Ghost en visitant [http://localhost:3001/ghost](http://localhost:3001/ghost) et ajouté l'email du contributeur à la liste des destinataires autorisés dans Mailgun, vous pouvez maintenant envoyer un lien d'invitation au contributeur à cet email avec Mailgun depuis [http://localhost:3001/ghost/#/settings/staff](http://localhost:3001/ghost/#/settings/staff).
8. Vous pouvez maintenant utiliser le lien d'invitation reçu dans l'e-mail pour créer un compte de contributeur. Après cela, vous aurez une configuration identique à celle que nous utilisons avec la restauration de la base de données.

# Comment tester l'attaque

Vous pouvez lancer l'installation que vous avez choisie en utilisant la commande suivante :

```bash
docker-compose up
```
Pour tester l'attaque suivez les étapes suivantes :

1. Générez la photo de profile SVG malveillante en utilisant le script generate-malicious-svg.py. Pour cela, exécutez la commande suivante en remplaçant [USERNAME] et [PASSWORD] par les identifiants du compte de contributeur que vous avez créé :

```bash
python generate-malicious-svg.py -u [USERNAME] -p [PASSWORD] -t http://localhost
```

Pour l'installation automatique, la commande est :

```bash
python generate-malicious-svg.py -u malicious.contributor@company.com -p ZtXfMq2FaRHGm@! -t http://localhost
```

<!-- TODO: Use venv setup to avoid asking python environment issues -->

Cette commande génère un fichier SVG malveillant nommé tenant-takeover.svg dans le répertoire courant.

2. 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](http://localhost:3001/ghost) et connectez-vous avec les identifiants du compte de contributeur.

3. 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".

4. 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.

5. 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.

6. 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](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](http://localhost:3001/ghost/#/settings/staff) et vous verrez que le contributeur est maintenant propriétaire du blog et vous êtes devenu un administrateur.

## 🎥 Vidéo Explicative  

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](cve-web-demo.webm)  

N'hésitez pas à consulter cette vidéo pour un aperçu complet du projet et des étapes techniques suivies.