Ataques XSS estão se tornando um grande problema e piorarão ainda mais se as pessoas não tomarem conhecimento desse tipo de ataque e suas vulnerabilidades.
Vulnerabilidades XSS tem sido encontradas em todos os tipos de site, até mesmo no fbi.gov, Yahoo.com, ebay.com e muitos outros sites populares e importantes.
Muitos administradores de sites falham em não atentar-se para ataques XSS porque, ou eles não sabem muita coisa sobre esse tipo de ataque, ou não os vêem como um problema.
Uma vulnerabilidade XSS quando explorada por um atacante hábil, ou mesmo um iniciante, pode ser um ataque poderoso.
Este texto, procura detalhar um ataque XSS e conscientizá-lo sobre o que esses ataques são, como os atacantes usam-nos e como pode prevenir-se deles.
O que é XSS
XSS, também conhecido como CSS (
Cross Site Scripting, facilmente confundido com Cascading Style Sheets), é uma vulnerabilidade muito comum encontrada em aplicativos web. XSS permite ao atacante inserir códigos maliciosos nessas páginas para que sejam executados no momento em que tais páginas forem acessadas.
O ataque permite que conteúdos (scripts) em uma zona sem privilégio seja executado com permissão de uma zona privilegiada - i.e. escalação de privilégios no cliente (web browser) executando o script.
A vulnerabilidade poderia ser:
- Um bug do browser que sob determinadas condições permite conteúdos (scripts) de determinado nível ser executado com permissões de níveis mais altos;
- Um erro na configuração do browser, sites não-seguros listados em zonas privilegiadas;
- Vulnerabilidade de cross-site scripting em uma zona privilegiada.
Um cenário comum de ataque envolve dois passos:
O primeiro passo é utilizar uma vulnerabilidade Cross Site Scripting para executar scripts em zonas privilegiadas. Para completar o ataque, realizar ações maliciosas no computador utilizando controles ActiveX não-seguros.
Esse tipo de vulnerabilidade tem sido explorada para instalar silenciosamente vários malware (tais como spyware, softwares de controle remoto, worms e coisas semelhantes) em computadores enquanto navegam em páginas web maliciosas.
Há muitos tipos de ataques XSS, mencionaremos 3 dos mais utilizados.
O primeiro tipo de ataque é de "XSS URL", que significa que o XSS não está na página, e apenas será executado se colocar o código malicioso na URL e enviar a URL. Falaremos mais sobre esse tipo mais à frente e sobre como usá-lo para nossa vantagem.
O segundo tipo é em campos de texto (ou senhas), onde podemos entrar com dados, que muito comumente são vulneráveis a XSS. Por exemplo, digamos que encontramos um site com opção de busca. Agora entramos com a palavra "hacker" na caixa de busca e pressionamos enter. Quando a página carrega, se retorna alguma informação dizendo "Found 100 Results For hacker", você poderá ver que serão exibidos dados na página. Mas o que aconteceria se você pudesse executar um código? Não é possível executar código PHP nesse tipo de ataque, mas certamente é possível códigos HTML, javascript.
No terceiro tipo, é possível inserir dados (códigos) e eles serão armazenados no site.
Que tipo de danos isso pode causar?
Bem, se um atacante cria um link manipulado e envia-o a uma vítima e essa vítima clica em tal link, um código javascript pode ser executado para enviar os cookies da vítima para um script CGI. Obviamente que um ataque desse tipo poderia causar um dano maior. Quando um atacante cria um link malicioso, ele normalmente codifica o código javascript em HEX ou algum tipo de codificação para ocultar o código malicioso.
Sites que são vulneráveis à ataques XSS rodam algum tipo de conteúdo dinâmico, que é o tipo de conteúdo que altera-se com a interação do usuário ou informação armazenada no banco de dados, tais como fóruns, email on-line e locais onde informações são enviadas.
Você pode perguntar por que um ataque XSS não pode ocorrer enquanto o usuário não está acessando determinado domínio. Isso ocorre porque quando a vítima está em um determinado site, o código malicioso é executado sob a mesma permissão de aplicações web de domínio ou endereço IP.