为了测试该漏洞,我们需要两个账号:一个具有管理员(所有者)角色的账号,以及一个具有贡献者角色的账号。在 Ghost CMS 中,首先需要访问管理面板来创建所有者账号,然后从该账号邀请一位贡献者,让其创建自己的账号。然而,在 Ghost 中,邀请贡献者的唯一方式是通过电子邮件发送邀请链接,这需要一个邮件投递服务来将邮件发送到贡献者的账号。为了方便起见,我们创建了一个 Mailgun 账号,向 Ghost 添加了一个贡献者,然后在我们所处的状态下创建了一个数据库转储文件。在我们的 Docker Compose 配置中,我们确保在启动 Ghost 之前先从转储中恢复数据库,这样您就不需要邮件投递服务来测试此漏洞。但是,如果您希望从全新安装开始,而不使用提供的数据库转储,您可以使用 manual-setup 文件夹中的 Docker Compose 来启动一个全新的 Ghost 安装。下面,您将找到配置 Mailgun(我们使用的一个邮件投递服务)并使其与 Ghost 配合使用的步骤。
对于此安装,以下是用于登录的管理员和贡献者凭据:
首先,您需要创建一个 Mailgun 账号。创建账号后,获取您的 SMTP 凭据。获取凭据后,按照 config.example.json 文件中显示的相同格式,将它们放入 config.development.json 文件中。
以下是分步指南:
config.example.json 文件并将其重命名为 config.development.json。config.development.json 文件中填写您的 SMTP 凭据。这将确保您的开发环境正确配置为通过 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
此命令会在当前目录中生成一个名为 tenant-takeover.svg 的恶意 SVG 文件。
使用您创建的贡献者账号的凭据登录 Ghost 管理界面。为此,请访问 http://localhost:3001/ghost 并使用贡献者账号的凭据登录。
通过点击屏幕左下角的个人资料照片,然后点击“Your profile”按钮,进入您的个人资料编辑页面。
点击个人资料图标以更改您的个人资料照片。选择您在第 1 步中生成的恶意 SVG 文件。
点击“Save & close”按钮保存更改。您可以刷新页面以确认个人资料照片已更改。
您现在可以从贡献者账号注销,并登录管理员账号。在 http://localhost:3001/ghost/#/settings/staff?tab=contributors 下,您可以看到贡献者的个人资料照片已更改。如果您右键单击个人资料照片,并在新标签页中打开图片,将触发攻击。您现在可以返回 http://localhost:3001/ghost/#/settings/staff,您将看到贡献者现在成为博客的所有者,而您变成了管理员。
我们制作了一个视频,详细描述了实现该 CVE 所需的整个过程和步骤。该视频作为视觉指南,帮助更好地理解我们的方法和所执行的操作。
视频链接: 点击此处观看视频
请随意观看此视频,以全面了解项目及其遵循的技术步骤。