
Recurso educacional sobre técnicas de ataque de Cross-site Scripting (XSS), cobrindo vetores não persistentes, persistentes e baseados em DOM, com exemplos práticos para aprendizado em segurança.
Cross-site Scripting (XSS) é uma técnica de ataque que envolve ecoar código fornecido pelo atacante no navegador do usuário. Uma instância de navegador pode ser um cliente de navegador web padrão ou um objeto de navegador incorporado em um produto de software, como o navegador dentro do WinAmp, um leitor de RSS ou um cliente de e-mail. O código em si geralmente é escrito em HTML/JavaScript, mas também pode se estender a VBScript, ActiveX, Java, Flash ou qualquer outra tecnologia suportada pelo navegador. Quando um atacante faz o navegador do usuário executar o código dele, o código será executado dentro do contexto de segurança (ou zona) do site hospedeiro. Com esse nível de privilégio, o código tem a capacidade de ler, modificar e transmitir quaisquer dados sensíveis acessíveis pelo navegador. Um usuário vítima de Cross-site Scripting pode ter sua conta sequestrada (roubo de cookies), seu navegador redirecionado para outro local ou, possivelmente, receber conteúdo fraudulento entregue pelo site que está visitando. Os ataques de Cross-site Scripting essencialmente comprometem a relação de confiança entre um usuário e o site. Aplicações que utilizam instâncias de objetos de navegador que carregam conteúdo do sistema de arquivos podem executar código sob a zona da máquina local, permitindo o comprometimento do sistema.
Existem três tipos de ataques de Cross-site Scripting: não persistentes, persistentes e baseados em DOM. Ataques não persistentes e ataques baseados em DOM exigem que um usuário visite um link especialmente criado e repleto de código malicioso ou visite uma página web maliciosa contendo um formulário web, que, ao ser enviado ao site vulnerável, desencadeará o ataque. O uso de um formulário malicioso geralmente ocorre quando o recurso vulnerável aceita apenas requisições HTTP POST. Nesse caso, o formulário pode ser enviado automaticamente, sem o conhecimento da vítima (por exemplo, usando JavaScript). Ao clicar no link malicioso ou enviar o formulário malicioso, o payload de XSS será ecoado de volta e será interpretado pelo navegador do usuário, que o executará. Outra técnica para enviar requisições quase arbitrárias (GET e POST) é usar um cliente incorporado, como o Adobe Flash. Ataques persistentes ocorrem quando o código malicioso é enviado a um site onde é armazenado por um período de tempo. Exemplos de alvos favoritos dos atacantes frequentemente incluem postagens em fóruns, mensagens de webmail e software de chat web. O usuário desavisado não precisa interagir com nenhum site/link adicional (por exemplo, um site do atacante ou um link malicioso enviado por e-mail), basta simplesmente visualizar a página web que contém o código.