22 de abril de 2009

Encontrando vulnerabilidades em aplicações web com teste fuzzy

Fuzzing é uma técnica largamente utilizada hoje em dia, para identificar vulnerabilidades em aplicações. A técnica consiste basicamente de submeter pacotes/dados de todos os tipos e identificar como a aplicação se comporta com estes dados. Para mostrar um teste fuzzy na prática, vou usar a ferramenta WebSlayer.

Usando o WebSlayer para fuzzing em aplicações Web

WebSlayer é uma ferramenta desenvolvida pelo grupo Edge-security, é apoiada pela OWASP e foi lançado no último Summit em Portugal. A ferramenta possibilita que seja realizado inúmeros testes em aplicações web, especialmente fuzzing.

Possui uma boa interface gráfica, aliada a uma boa base de conhecimento (wordlists). A ferramenta fornece apenas wordlists, não fornece pacotes, requisições HTTP que possam ser usadas no fuzzing, a ferramenta permite que você gere o payload da forma como achar melhor.

Vamos usar uma abordagem estruturada de fuzzing para explorar os recursos do WebSlayer

1 - Identificar o Alvo

Vamos iniciar definindo qual a URL será testada.



2 - Identificar o Input

Agora vamos identificar o input onde será injetados os dados da wordlist. Caso seja parâmetros GET, ele será informado na própria URL, se for POST será informado na caixa de texto abaixo, específica para parâmetros POST. o WebSlayer irá injetar as palavras/strings, onde você inserir a tag FUZZ. Por exemplo, http://sitealvo.com/teste.php?parametro1=FUZZ. O WebSlayer irá injetar as strings das wordlists no parâmetro onde eu informei a tag FUZZ.





3 - Gerar o payload (dado que será usado no fuzzing)

Neste passo iremos selecionar o tipo de wordlist que iremos injetar. Também é possível gerar requisições/payloads específicos, mas vamos trabalhar com as wordlists neste post. Além de escolher a wordlist, também podemos mandar injetar estas informações codificadas, buscando evadir assinaturas de WAF (Web Application Firewall) e controles na aplicação.



4 - Executar o Fuzzing

Definido quais os dados serão usados no fuzzing, clique em executar os testes.

5 - Monitorar as Exceções

Ao executar o fuzzing, será apresentado na seção Attack Results, todas as respostas que foram dadas pela aplicação a cada requisição que o fuzzing fez.



6 - Identificar possíveis pontos de exploração

Na seção Attacks Results você irá identificar qual os inputs são possíveis vetores de ataque, quais são os inputs vulneráveis. Esta identificação será feita de acordo com a resposta e a utilização de Regex (Expressões regulares).




Isso é uma utilização básica do WebSlayer, vários outros testes podem ser executados. Até o momento só a versão Windows está disponível, em breve as versões para Mac e Linux estarão disponíveis.

5 comentários:

Norman disse...

Excelente post Wagner, teoria aliada a prática sempre é bem mais interessante, fiquei com a algums dúvidas seguinte:

Na parte de Identificar o Input, vi que vc usou Add-on para firefox Live Headers HTTP, e no exemplo apareceu xss=1 no qual vc destacou(azul na figura), a dúvida é seguinte, nessa caso só apareceu xss=1, pois o metodo é post??

E logo após vc inseriu a tag xss=FUZZ na janela post data. E quando o metodo for get, onde inserir a tag FUZZ.

Espero que tenha mas post desse tipo(mão na massa).

Abs

Norman disse...

Wagner, as dúvidas já foram sanadas!!! Fica valendo só os elogios dos posts.

Abs

Herberth Amaral disse...

Não conhecia essa técnica de identificação de vulnerabilidades. Muito bom o post :)

O melhor da semana: 10/04 a 16/04 « QualidadeBR disse...

[...] Encontrando vulnerabilidades em aplicações web com teste fuzzy – Wagner Elias (Wagner Elias – Think Security First); [...]

O melhor da semana: 10/05 a 16/05 « QualidadeBR disse...

[...] Encontrando vulnerabilidades em aplicações web com teste fuzzy – Wagner Elias (Wagner Elias – Think Security First); [...]