Pesquisar este blog

terça-feira, 28 de dezembro de 2010

Testes de Segurança de XSS com Plugin XSS Me e outras ferramentas livres.

Cross-Site Scripting (XSS)

Introdução

Os Sites de hoje estão mais complexos do que nunca, com muito conteúdo dinâmico tornando a experiência do usuário mais agradável. O conteúdo dinâmico é alcançado através da utilização de aplicações web que podem proporcionar uma saída diferente para um usuário de acordo com suas configurações e necessidades. Sites dinâmicos sofrem com a ameaça de que sites estáticos não, chamado de "Cross Site Scripting" (ou XSS). Vou mostrar como fazer teste de segurança de XSS, para verificar se o site está vulnerável a essa ameaça, para isso vamos utiliza o Firefox e o Plugin chamado de XSS Me, as ferramentas utilizadas são totalmente livre.

O que é Cross Site Scripting?


O XSS, ou Cross Site Scripting é um método de ataque onde um site não filtra suficientemente os parâmetros que recebe dos browsers. Os dados são geralmente reunidos sob a forma de um link que contém conteúdo malicioso dentro dela. O usuário irá clicar provável nesse link de outro site, mensagem instantânea, ou simplesmente ler um conteúdo da web ou mensagem de e-mail. Normalmente, o atacante irá codificar a parte malicioso do link para o site em HEX (ou outros métodos de codificação) para camuflar do usuário quando clicar. Depois que os dados são recolhidos pelo aplicativo web, ele cria uma página de saída para o usuário contendo os dados maliciosos que foi originalmente enviada a ele, mas de uma forma para fazê-lo aparecer como conteúdo válido do site. Muitos programas populares no livro de visitas e fórum de permitir que os usuários enviem mensagens com HTML e JavaScript embutidos nelas. Se, por exemplo, eu estava logado como "João" e ler uma mensagem de "Joe", que continha JavaScript malicioso nele, então pode ser possível para "Joe" para seqüestrar a minha sessão, apenas abrindo o Link.

Exemplo Local:
<script >alert(document.cookie)</script>
<IMG SRC=j&#X41vascript:alert('test2')>
<body onload=alert('test1')>
<img src="http://url.to.file.which/not.exist" onerror=alert(document.cookie);>

Exemplo Remoto:

<A HREF="http://reinaldorossetti.blogspot.com/">XSS</A>
<img src="http://www.pcinside.org/wp-content/uploads/2011/08/hacker-inside-300x240.jpg">
<SCRIPT SRC=http://ha.ckers.org/xss.js></SCRIPT>

As Falhas XSS pode causar sérios danos a uma aplicação web. Detectando vulnerabilidades XSS no início do processo de desenvolvimento da Aplicação Web ou do Site Dinâmico vai ajudar a proteger uma aplicação web de falhas desnecessárias. XSS-Me é um Plugin para testes de segurança, usado para testar as vulnerabilidades XSS.



Figura 2 – Depois de Instalado, abra a aplicação ou site de deseja usar, em seguida vá em “Ferramentas/XSS ME/Open XSS Me Sidebar”.



Figura 3 – Na barra lateral verá as Opções de Teste, selecione as opções e click no botão Execute, se deseja testar tudo click no botão “Test all forms with all attacks”.



Figura 4 – Depois de Realizar os testes aparecerá uma página com os resultados, temos 0 falhas (Failures) na aplicação, não apresentou erro na aplicação, em compensação apresentou 234 avisos (Warnings), e 234 passaram (Passes) ou 0 falhas.


Como faço para interpretar os resultados XSS-Me?
    
·        XSS-Me tem três tipos de resultado:

Falhas, o número de testes que certamente resultou na detecção que refletiu XSS.
Avisos, o número de testes que pode ter resultado na detecção de cross-site scripting (ou seja, não alterar o objeto DOM do Firefox, conforme especificado no JavaScript, mas pode resultar em um ataque bem sucedido em um navegador diferente.
Passados, o número de testes que não resultou na detecção para refletir XSS.


Outras ferramentas livres boas:


1. W3af Web Application Attack and Audit Framework.


Você pode criar Profile dos testes que deseja, para Web siga sempre o OWASP TOP 10.
fonte: http://w3af.org/

Comando para instalar: sudo apt-get install w3af


2. X5s é um plugin para Fiddler, fiddler é web debugging proxy para windows, o fiddler é bem legal pra analisar as requisições e também faz alguns testes de segurança.


fonte: http://xss.codeplex.com/ e http://www.telerik.com/fiddler

3. Outra ferramenta que considero muito boa é o arachni-scanner, tem para Linux, MAC e Windows. O mesmo possui uma Interface Web e outra via linha de comando. Usando ele em alguns sites externos ele não reconheci bem o servidor, acho que o servidor tem que ser visível para ele, alguns ocultam as configurações.




Fonte: http://www.arachni-scanner.com/
Instalação: https://github.com/Arachni/arachni/wiki/Installation

Você pode usar várias ferramentas livres para começar a fazer seus testes de segurança, geralmente as ferramentas tem seu ponto forte e fraco, mas são uma ótima solução sem custos, necessário somente conhecimento para seu manuseio. Comece hoje a fazer seus testes de segurança, os mesmo são de alta importância para o sucesso da empresa!


Links:
Artigo bom sobre XSS:
Site do Fabricante:
Exemplo de Uma Aplicação com vulnerabilidades:
Download da Aplicação:
Mostra Exemplos de XSS Script:

quinta-feira, 23 de dezembro de 2010

Testes: Por que?

Semelhante à situação de muitos sistemas físicos e produtos, o objetivo do teste de software é assegurar que o software funcione como esperado, de acordo com que foi projetado, quando eles são usados por seus clientes e  usuários finais. A maneira mais natural de mostrar o cumprimento das expectativas é demonstrar o seu funcionamento através de alguns "dry-run" um conjunto de atividades planejadas,  em laboratório antes que os produtos sejam liberados ou entregues. Na caso de produtos de software, esse conjunto de atividades planejadas, se faz através da execução do programa que é geralmente chamado de teste.
 O objetivo principal do processo de teste é simplesmente encontrar mais número de defeitos possíveis. Problemas que podem ocorrer em produção, o processo de teste está diretamente relacionado a Qualidade do Software.

·        Processo de executar um programa ou sistema com intenção de encontrar defeitos (teste negativo) (Glen Myers – 1979);
·        Qualquer atividade que a partir da avaliação de um atributo ou capacidade de um programa ou sistema seja possível determinar se ele alcança os resultados desejados (Bill Hetzel - 1988).