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:
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
Wagner, as dúvidas já foram sanadas!!! Fica valendo só os elogios dos posts.
Abs
Não conhecia essa técnica de identificação de vulnerabilidades. Muito bom o post :)
[...] Encontrando vulnerabilidades em aplicações web com teste fuzzy – Wagner Elias (Wagner Elias – Think Security First); [...]
[...] Encontrando vulnerabilidades em aplicações web com teste fuzzy – Wagner Elias (Wagner Elias – Think Security First); [...]
Postar um comentário