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.