O que é Cross-Site Scripting Refletido?

Cross-site scripting refletido também conhecido como XSS refletido, XSS não persistente ou XSS tipo 1, é uma das vulnerabilidades mais encontrada atualmente. Essa falha se manifesta quando a aplicação web vulnerável reflete um valor qualquer, sem antes validá-lo de forma correta.

Observe a seguinte requisição:

A aplicação  exibe a mensagem Hello com o nome do usuário que o parâmetro “name” recebeu, ou seja, a aplicação exibiu exatamente o valor que o parâmetro recebeu. Até aí nada de mais, afinal de contas a ideia aqui é exibir a mensagem Hello com o nome do usuário.

Tendo isso em mente, um usuário malicioso pode fazer a seguinte requisição:

http://192.168.1.7/xss/example1.php?name=carlos"><script>alert('XSS Refletido')</script>

Note que após o nome Carlos foi inserido o payload contendo código javascript. Caso a aplicação não realize de forma correta a validação do valor que o parâmetro “name” recebe, quando a aplicação refletir o payload

carlos"><script>alert('XSS Refletido')</script>

de volta para o usuário, o javascript que foi inserido será executado pelo navegador, causando a exibição do alerta.

Cross-Site Scripting Refletido

O problema aqui não é o payload ser refletido para o usuário. Existem muitos casos onde a aplicação web vai refletir o mesmo payload para o usuário, mas o código não será executado, pois, a aplicação web realiza uma validação robusta antes de refleti-lo. Algumas aplicações vão remover a tag “script” da requisição, outras irão converter a tag “script” para &ltscript&gt. Tudo isso é passível de bypass, caso a implementação não ocorra de forma correta.

A prova de conceito mais comum de cross-site scripting refletido é causar a exibição do alerta, o que faz com que muitos desprezem essa falha grave. Cross-site scripting refletido pode ser utilizado para sequestro de seção, redirecionamento, defecement, engenharia social, download de malware, dentre outros.

Como se proteger de Cross-Site Scripting Refletido?

Filtre todo e qualquer dado que o usuário enviar para a aplicação. A owasp possui uma página inteira voltada para a proteção contra cross-site scripting.

https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet