Tipos de XSS

Hoje darei início a uma série de artigos sobre segurança da informação e tecnologias utilizadas. O propósito desses artigos é aperfeiçoar os conhecimentos que adquiri durante os estudos para a certificação CISSP (Certified Information Systems Security Professional).

Existem uma variedade enorme de tipos de exploração de vulnerabilidades. Um dos tipos mais utilizados, e com grande risco para usuários e sistemas, são os ataques do tipo XSS (Cross-site Scripting). Existem diferentes abordagens de como são efetivados esses ataques conforme descreverei a seguir.

Um ataque do tipo XSS é basicamente a capacidade em um atacante provocar de forma não desejada a execução de código no lado do cliente. Esse tipo de ataque ocorre sempre que dados de entrada não são adequadamente tratados e validados. Com isso os resultados da inserção de dados são imprevisíveis do lado da aplicação e um atacante pode se utilizar disso para realizar a execução de código não desejado.

Existem três diferentes tipos de vulnerabilidades XSS:

  • XSS DOM ou Tipo 0
  • XSS não persistente ou Tipo I
  • XSS persistente ou Tipo II

Tipo 0 ou XSS DOM

DOM (Document Object Model), também conhecido como local cross-site scripting, é um tipo de ataque em que a requisição realizada pelo cliente possui código (geralmente Javascript) para modificar o conteúdo do HTML que será renderizado pelo cliente. Geralmente isso ocorre devido a forma como os dados da URI (Uniform Resource Identifier) são utilizados pela aplicação na renderização do HTML construído no lado do cliente, abrindo a possibilidade de execução de código indevido pelo cliente.

Nesse tipo de XSS não há a importação de dados externos, como ocorre em outros tipos de XSS que serão apresentados a seguir.

Exemplo: um cliente é persuadido a acessar a URL de um domínio confiável porém utilizando de parâmetros desconhecidos e propositalmente construídos para alterar o conteúdo da página apresentada ao cliente. O uso de encurtadores de URL potencializam esse tipo de ataque, já que é possível mascarar toda a URL. 

Exemplo no HackerOne: https://hackerone.com/reports/200753

Tipo 1 ou XSS Não Persistente

Também conhecido como vulnerabilidade refletida (reflected vulnerability) ocorre quando um atacante engana sua vítima para a execução de uma URL programada com um rogue script que executará de forma não controlada no cliente. Esse script estará hospedado em recurso externo, conferindo ao atacante a possibilidade de execução de qualquer código no cliente que acessar à URL maliciosa.

Exemplo de situação: O cliente acessa a uma URL que contém código que direcionará um cliente a baixar um script externo que será executado no cliente.

Exemplo no Open Bug Bounty: https://www.openbugbounty.org/reports/647973/?fbclid=IwAR023JyJH63LqP77tzZo3EbK4hl4L0uJEpc3lF9JS620qsuHRkWZL4V2KW8

Com a execução do código pelo cliente é possível com que dados sensíveis, como cookies e IDs de sessão, por exemplo, sejam capturados. Ou mesmo que seja construída tela no cliente diferente da esperada.

Tipo 2 ou XSS Persistente

Também conhecido vulnerabilidade de segunda ordem (second-order vulnerability) ou ainda Tipo II, é utilizada quando é possível inserir dados no servidor sem a correta sanatização desses, permitindo com que um script malicioso seja armazenado em em um banco de dados, e a vítima poderá acessar aos dados sem o correto tratamento dos dados.

Exemplo: o atacante insere um Javascript por meio de um campo de texto não sanitizado de uma postagem em um fórum. Todos os demais clientes que acessarem a publicação do fórum executarão o Javascript que foi inserido pelo atacante. 

Referências:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *