Uploader bypass: Obtendo XSS em ‘imagem . jpg’

Como eu consegui burlar um sistema de upload e obter um XSS em uma imagem.

Dias atrás eu vinha buscando por sites no Hackerone no intuito de encontrar alguma vulnerabilidade em alguns deles e em troca, ganhar pontos de reputação.

Como sou iniciante, decidi começar com a General motors, em um de seus domínios, por ter um baixo número de casos resolvidos, assim isso facilitaria para mim. De início reportei 3 XSS mas por azar foram marcados como “duplicados”.

Em meus testes encontrei o domínio developer.gm.com, onde continha uma área de cadastro para usuários do site.

Uploader

Image for post
Image for post

Após várias tentativas de burlar o sistema de upload deles, encontrei um “Directory transversal” e uma maneira de substituir a imagem de qualquer outro usuário.

Então tive a ideia de interceptar e alterar o Content-type da imagem na hora do upload, que estava marcado como ‘image/jpeg’ .

Image for post
Image for post

Substituí o Content-Type para: text/html, isso fez com que o servidor ‘informasse’ para o navegador que aquela imagem deveria ser interpretada como um arquivo .html. Fiz uma requisição e o site me retornou a imagem interpretada de acordo com o Content-Type que eu selecionei.

Logo após, enviei uma imagem com um xss payload na source, o resultado saiu como esperado.

Image for post
Image for post

Report feito: Feb 6th

Primeira resposta: Feb 7th

Resposta de correção: Feb 7th

O administrador confirmou a vulnerabilidade, ganhei meus pontos e fui adicionado ao ranking de gratificações.

Image for post
Image for post

PoC:

https://www.youtube.com/watch?v=T-EQfydIxu4

Written by

Pentester , CTF player, Bug Hunter & Security Researcher \nTwitter: https://twitter.com/elber333

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store