BOOK THIS SPACE FOR AD
ARTICLE ADNessa ultima semana (15/05) eu estava estudando por artigos e reports da hackerone, até que me deparei com uma falha de XSS armazenado por uma imagem, achei muito legal a ideia e quis reproduzir em meus clientes e em uma plataforma de bug bounty, por incrível que pareça isso funcionou em ambas! Então hoje irei mostrar detalhadamente essa falha para que você possa aprender mais e testar em seu bug bounty.
O XSS armazenado, também conhecido como XSS persistente, é o mais prejudicial entre os tipos de XSS. Esta falha ocorre quando um script malicioso é injetado em um parâmetro que esteja sendo armazenado em algum banco de dados ou arquivo.
Obs: Pretendo trazer um artigo completo falando sobre os 3 tipos de XSS em breve.
Exiftool é uma ferramenta utilizada para analisar os metadados de uma imagem, com ela podemos ver, remover e adicionar certas informações e é assim que vamos adicionar uma payload na imagem.
Instalando Exiftool
Debian e Ubuntu.
sudo apt install exiftoolPara outras versões recomendo que acesse o site oficial, então você terá mais opções de instalação.
A imagem vai depender de onde você quer colocar (background, profile e etc), nos meus testes fiz em fotos de perfil usando essa aqui:
Eu recomendo essa imagem pois ela encaixa muito bem para o padrão de imagens de foto de perfil.
Com a nossa imagem baixada, com o exiftool baixado agora podemos seguir em frente utilizando este comando:
exiftool -Comment="\"><script>alert(prompt('XSS Stored Gabriel Lima'))</script>" Nome_da_foto.pngNesse comando estamos usando o exiftool para colocar a payload no comment da foto.
Obs: Você não é obrigado a usar só esta payload, você pode testar varias outras!
Caso tudo de certo a resposta será esta:
Rodando o exiftool na imagem temos as informações do metadados assim:
Se na parte comment estiver a payload significa que está tudo pronto.
Agora que temos nossa imagem pronta vamos explorar a falha, primeiramente o que temos que fazer é encontrar um lugar que disponibiliza o upload de foto, geralmente localizamos na aba “Perfil”, mas claramente isso depende muito de aplicação para aplicação.
Aviso: Por questão de ética estarei privando dados do site que eu efetuei o report, não tenho a intenção de denegrir a empresa, estou apenas ensinado uma técnica para ajudar a comunidade de bug bounty e pessoas que querem aprender algo novo!
Agora que localizamos o campo para fazer upload de foto, temos que ligar o nosso burpsuite para interceptar a conexão no meio do upload e então temos que localizar o Content-Type.
O que faremos agora é alterar o tipo de conteudo, iremos modificar para text/html, faremos isso para que ele interprete a nossa foto como um código e dessa forma ativamos o XSS.
Content-Type: text/htmlVamos deixar a conexão continuar clicando em Forward no burpsuite!
Agora vamos conferir se a foto esta realmente com o XSS funcionando, para ver isso basta clicar com o botão direito na imagem, inspecionar o elemento e então teremos o caminho da foto.
Clique com o botão direito no caminho e abra em uma nova guia e então recarregue a página.
Então conseguimos pessoal, a partir daqui basta fazer um report e torcer pro dinheiro cair na conta!
Com a análise de outros reports e com base no meu, diria que se encontra entre uma falha de média criticidade, pois é necessário que o usuário abra a imagem em uma outra guia para funcionar.
Obs: Lembrando que isso vai de empresa para empresa, pode ser que um empresa classifique isto como uma falha média ou alta e assim vai.
Essa foi uma falha muito legal na minha opinião e não é algo que as pessoas pensam em fazer de primeira ou nem fazem!
Espero que este artigo tenha agregado em seu conhecimento e que vocês consigam achar uma falha dessa em sua jornada, caso queiram me apoiar basta me seguir no meu Instagram: @gabriel_lima232