as vulnerabilidades de script entre sites foram exploradas por invasores desde o início dos anos 2000, e o XSS está na lista do OWASP Top 10 de riscos críticos de segurança para aplicativos da web a partir de 2004. No entanto, muitos desenvolvedores, administradores de sistema e até mesmo alguns testadores de penetração ainda não levam isso a sério. Para se tornar um hacker ou defensor eficaz de aplicativos da web, você deve entender o básico de como evitar ataques XSS.
os ataques XSS ainda são problema
Cross-site scripting é um tipo de vulnerabilidade de aplicativo da web que permite aos invasores injetar e executar código malicioso do lado do cliente no navegador da vítima dentro de um aplicativo da web legítimo.
o impacto e a gravidade dos ataques XSS bem-sucedidos podem variar. Os ataques XSS podem resultar em sequestro de sessão, tokens roubados, cookies de sessão roubados e ataques de falsificação de solicitação entre sites. Esses ataques podem fazer com que as contas de usuário sejam comprometidas.
um ataque XSS bem-sucedido também pode permitir que um invasor use cookies roubados ou forjados para se passar por usuários válidos. Nos casos em que o usuário válido tem direitos administrativos dentro do aplicativo, o invasor pode usar esses privilégios para alterar páginas ou executar código remoto no lado do servidor do aplicativo.
tipos de ataques XSS
existem três tipos de ataques XSS: armazenados, refletidos e Document Object Model (DOM) com base.
- um ataque XSS armazenado permite que um invasor incorpore um script malicioso em uma página vulnerável, que é executada quando uma vítima visualiza a página. O XSS armazenado é considerado o tipo mais prejudicial de ataque XSS. Por exemplo, quando um invasor injeta uma carga útil JavaScript maliciosa diretamente em um aplicativo da web vulnerável, o navegador da web salva a carga útil JavaScript injetada. Então, cada vez que a vítima visita esse site ou aplicativo da web, o código malicioso é executado.
- um ataque XSS refletido ocorre quando a carga maliciosa é incorporada em um link e ativada apenas quando o usuário clica no link. Aqui, a carga maliciosa não é armazenada, mas exibida apenas na página da web na forma de um URL ou dados de postagem.
- uma vulnerabilidade XSS baseada em DOM surge quando o DOM é usado para gerar conteúdo dinâmico contendo entrada do usuário que pode ser processada sem verificação. Este tipo de ataque é realizado com JavaScript no navegador da vítima
ataque de XSS prevenção
> Para evitar ataques de XSS, os desenvolvedores devem validar a entrada do usuário, devidamente filtrar ou escapar caracteres especiais e, em seguida, a codificação da saída para evitar ataques de XSS armazenado e refletido ataques de XSS. Os seguintes caracteres especiais devem sempre ser filtrados ou escapados para evitar que sejam explorados de forma maliciosa:
< |
> |
“ |
‘ |
) |
( |
& |
os Desenvolvedores devem validar a entrada do usuário-fontes-e codificar a saída — pias — para evitar baseado em DOM ataques de XSS. A propriedade fonte de entrada é de onde o DOM lê, e a fonte é onde o invasor pode injetar código malicioso para explorar a vulnerabilidade XSS. As seguintes propriedades da fonte deve ser evitado:
- URL
- documentURI
- localização
- href
- pesquisa
- hash
Sumidouros são os pontos onde o DOM executa o mal-intencionados caracteres ou códigos de entrada — fonte — que, por sua vez, é enviado para a página da web. Esses sumidouros devem ser evitados para evitar ataques XSS baseados em negação de serviço:
- innerHTML
- outerHTML
- escreva
se você gostaria de melhorar a compreensão e prevenção de ataques XSS, o Google construiu um site de jogos XSS para aprender como esses ataques funcionam e como melhor evitá-los. O projeto Mutillidae 2 da OWASP também oferece um alvo de aprendizado para profissionais de segurança da web afiarem suas defesas de ataque XSS.