Hacking ético - Cross-Site Scripting
Cross-site scripting (XSS) é um ataque de injeção de código que permite a um invasor executar JavaScript malicioso no navegador de outro usuário.
O atacante não visa diretamente sua vítima. Em vez disso, ele explora uma vulnerabilidade em um site que a vítima visita, a fim de fazer com que o site entregue o JavaScript malicioso para ela. Para o navegador da vítima, o JavaScript malicioso parece ser uma parte legítima do site e, portanto, o site agiu como um cúmplice não intencional do invasor. Esses ataques podem ser realizados usando HTML, JavaScript, VBScript, ActiveX, Flash, mas o XSS mais usado é o JavaScript malicioso.
Esses ataques também podem reunir dados de sequestro de conta, alteração das configurações do usuário, roubo / envenenamento de cookies ou propaganda enganosa e criar ataques DoS.
Exemplo
Vamos dar um exemplo para entender como funciona. Temos uma página da web vulnerável que obtivemos pelometasploitablemáquina. Agora testaremos o campo destacado na seta vermelha para XSS.
Em primeiro lugar, fazemos um script de alerta simples
<script>
alert(‘I am Vulnerable’)
</script>
Ele produzirá a seguinte saída -
Tipos de ataques XSS
Os ataques XSS são geralmente divididos em três tipos -
Persistent XSS, onde a string maliciosa se origina do banco de dados do site.
Reflected XSS, onde a string maliciosa se origina da solicitação da vítima.
DOM-based XSS, em que a vulnerabilidade está no código do lado do cliente, e não no código do servidor.
Geralmente, o cross-site scripting é encontrado por vulnerability scanners para que você não tenha que fazer todo o trabalho manual, colocando um JavaScript nele como
<script>
alert('XSS')
</script>
Burp Suite e acunetix são considerados os melhores scanners de vulnerabilidade.
Dica rápida
Para evitar ataques XSS, tenha em mente os seguintes pontos -
Verifique e valide todos os campos do formulário, como formulários ocultos, cabeçalhos, cookies, strings de consulta.
Implemente uma política de segurança rigorosa. Defina a limitação de caracteres nos campos de entrada.