
Чтобы протестировать уязвимость, нам нужны две учётные записи: учётная запись с ролью администратора (владельца) и учётная запись с ролью участника (contributor). В Ghost CMS сначала необходимо зайти в панель администратора, чтобы создать учётную запись владельца, а затем из этой учётной записи пригласить участника, чтобы он создал собственную учётную запись. Однако в Ghost единственный способ пригласить участника — отправить приглашение по электронной почте, для чего требуется сервис доставки электронных писем, чтобы отправить письмо на адрес участника. Чтобы упростить задачу, мы создали учётную запись Mailgun, добавили участника в Ghost, а затем создали файл дампа базы данных в том состоянии, в котором она у нас была. В нашей конфигурации Docker Compose мы сначала восстанавливаем базу данных из дампа перед запуском Ghost, так что вам не нужен сервис доставки электронных писем для тестирования этой уязвимости. Однако если вы хотите начать с чистой установки и не использовать предоставленный дамп базы данных, вы можете использовать Docker Compose из папки manual-setup, чтобы запустить чистую установку Ghost. Ниже вы найдёте шаги по настройке Mailgun (сервиса доставки электронных писем, который мы использовали) и его интеграции с Ghost.
Для этой установки используйте следующие учётные данные администратора и участника для входа:
Для начала вам нужно создать учётную запись Mailgun. После создания учётной записи получите свои SMTP-учётные данные. Получив их, поместите их в файл config.development.json, следуя тому же формату, что показан в файле config.example.json.
Вот пошаговое руководство:
config.example.json и переименуйте его в config.development.json.config.development.json. Это гарантирует, что ваша среда разработки правильно настроена для отправки электронных писем через Mailgun.Вы можете запустить выбранную установку с помощью следующей команды:
docker-compose up
Чтобы протестировать атаку, выполните следующие шаги:
python generate-malicious-svg.py -u [USERNAME] -p [PASSWORD] -t http://localhost
Для автоматической установки команда следующая:
python generate-malicious-svg.py -u [email protected] -p ZtXfMq2FaRHGm@! -t http://localhost
Эта команда создаёт вредоносный SVG-файл с именем tenant-takeover.svg в текущем каталоге.
Войдите в административный интерфейс Ghost, используя учётные данные созданной вами учётной записи участника. Для этого посетите http://localhost:3001/ghost и войдите, используя учётные данные учётной записи участника.
Перейдите на страницу редактирования своего профиля, нажав на свою фотографию профиля в левом нижнем углу экрана, а затем нажав кнопку «Your profile».
Нажмите на значок профиля, чтобы изменить фотографию профиля. Выберите вредоносный SVG-файл, созданный на шаге 1.
Сохраните изменения, нажав кнопку «Save & close». Вы можете обновить страницу, чтобы убедиться, что фотография профиля изменилась.
Теперь вы можете выйти из учётной записи участника и войти в учётную запись администратора. На странице http://localhost:3001/ghost/#/settings/staff?tab=contributors вы можете увидеть, что фотография профиля участника изменилась. Если вы щёлкнете правой кнопкой мыши по фотографии профиля и откроете изображение в новой вкладке, это запустит атаку. Теперь вы можете вернуться на http://localhost:3001/ghost/#/settings/staff и увидите, что участник теперь является владельцем блога, а вы стали администратором.
Мы создали видео, в котором подробно описан весь процесс и шаги, необходимые для реализации CVE. Это видео служит визуальным руководством, чтобы лучше понять наш подход и выполненные действия.
Ссылка на видео: Нажмите здесь, чтобы посмотреть видео
Не стесняйтесь посмотреть это видео для полного обзора проекта и выполненных технических шагов.