
Exploit de prova de conceito para CVE-2024-23724: escalonamento de privilégios através do upload malicioso de foto de perfil SVG no Ghost CMS. Inclui configuração automatizada e script de ataque.
Para testar a vulnerabilidade, precisamos de duas contas: uma conta com o papel de administrador (proprietário) e uma conta com o papel de contribuidor. No Ghost CMS, primeiro é necessário acessar o painel de administração para criar a conta proprietária, em seguida, a partir dessa conta, convidar um contribuidor para que ele crie sua própria conta. No entanto, no Ghost, a única maneira de convidar um contribuidor é enviar um link de convite por e-mail, o que exige um serviço de entrega de e-mails para enviar o e-mail para a conta do contribuidor. Para facilitar as coisas, criamos uma conta Mailgun, adicionamos um contribuidor ao Ghost e, em seguida, criamos um arquivo de dump do banco de dados no estado em que o tínhamos. Na nossa configuração Docker Compose, primeiro restauramos o banco de dados a partir do dump antes de iniciar o Ghost, de modo que você não precise de um serviço de entrega de e-mails para testar esta vulnerabilidade. No entanto, se você deseja começar com uma instalação limpa e não usar o dump de banco de dados fornecido, você pode usar o Docker Compose na pasta manual-setup para iniciar uma instalação Ghost limpa. Abaixo, você encontrará as etapas para configurar o Mailgun (um serviço de entrega de e-mails que usamos) e fazê-lo funcionar com o Ghost.
Para esta instalação, aqui estão as credenciais do administrador e do contribuidor para fazer login:
Para começar, você precisa criar uma conta Mailgun. Após criar sua conta, obtenha suas credenciais SMTP. Depois de obter suas credenciais, coloque-as no arquivo config.development.json seguindo o mesmo formato mostrado no arquivo config.example.json.
Aqui está um guia passo a passo:
config.example.json e renomeie-o para config.development.json.config.development.json. Isso garantirá que seu ambiente de desenvolvimento esteja corretamente configurado para enviar e-mails via Mailgun.Você pode iniciar a instalação que escolheu usando o seguinte comando:
docker-compose up
Para testar o ataque, siga os seguintes passos:
python generate-malicious-svg.py -u [USERNAME] -p [PASSWORD] -t http://localhost
Para a instalação automática, o comando é:
python generate-malicious-svg.py -u [email protected] -p ZtXfMq2FaRHGm@! -t http://localhost
Este comando gera um arquivo SVG malicioso chamado tenant-takeover.svg no diretório atual.
Faça login na interface de administração do Ghost usando as credenciais da conta de contribuidor que você criou. Para isso, visite http://localhost:3001/ghost e faça login com as credenciais da conta de contribuidor.
Acesse a página de edição do seu perfil clicando na sua foto de perfil no canto inferior esquerdo da tela e, em seguida, clicando no botão 'Your profile'.
Clique no ícone do perfil para alterar sua foto de perfil. Selecione o arquivo SVG malicioso que você gerou na etapa 1.
Salve as alterações clicando no botão 'Save & close'. Você pode atualizar a página para verificar se a foto de perfil foi alterada.
Agora você pode se desconectar da conta de contribuidor e fazer login na conta do administrador. Em http://localhost:3001/ghost/#/settings/staff?tab=contributors, você pode ver que a foto de perfil do contribuidor foi alterada. Se você clicar com o botão direito na foto de perfil e abrir a imagem em uma nova aba, isso acionará o ataque. Agora você pode voltar para http://localhost:3001/ghost/#/settings/staff e verá que o contribuidor agora é proprietário do blog e você se tornou um administrador.
Nós fizemos um vídeo que descreve em detalhes todo o processo e as etapas necessárias para implementar a CVE. Este vídeo serve como guia visual para entender melhor nossa abordagem e as ações realizadas.
Link para o vídeo: Clique aqui para assistir ao vídeo
Não hesite em consultar este vídeo para uma visão geral completa do projeto e das etapas técnicas seguidas.