Na hora de realizar tanto um pentest quanto um bug bounty, uma das etapas iniciais é a enumeração de conteúdos presentes no alvo, seja um servidor ou serviço web. Para realizar enumeração em serviços web, contamos com o auxílio de diversas ferramentas de web fuzzing, e uma delas é o ffuf, uma poderosa ferramenta para garantir uma enumeração rápida e altamente customizável. Para a demonstração desta ferramenta será usado o juice-shop e o site vulnweb da Acunetix.
Primeiramente iremos descobrir os arquivos que o serviço web possui. Para isso usamos o comando abaixo:
ffuf -u http://127.0.0.1:3000/FUZZ -w /usr/share/wordlists/SecLists-master/Discovery/Web-Content/common.txt
Entendendo o comando:
-u: URL alvo.
FUZZ: onde ocorrerá substituição das palavras encontradas na wordlist para encontrar os conteúdos do serviço web.
-w: wordlist que será usada, neste caso usaremos a SecList.
Quando executamos o comando acima, obtemos diversos resultados indesejáveis entre aqueles que queremos. O ffuf tem capacidade de filtrar esses resultados indesejáveis com as opções de filtros, as principais opções são:
-fc: filtra os status code das responses geradas pelo servidor.
-fl: filtra o número de linhas da response.
-fs: filtra o tamanho da response HTTP.
Neste artigo será usado a opção -fl para filtrar todos os resultados que tenham exatamente 30 linhas, logo o comando ficará assim:
ffuf -u http://127.0.0.1:3000/FUZZ -w /usr/share/wordlists/SecLists-master/Discovery/Web-Content/common.txt -fl 30
Com esses achados podemos explorar ainda mais a aplicação web a fim de adquirir um maior conhecimento sobre o serviço alvo.
Para aprimorar a nossa busca por arquivos, iremos usar a opção -e que permite a busca por uma determinada extensão de arquivo. Neste exemplo será usado o vulnweb e o seguinte comando será usado:
ffuf -u http://testphp.vulnweb.com/FUZZ -w /usr/share/wordlists/SecLists-master/Discovery/Web-Content/common.txt -e .php
Caso não tivesse sido usada a opção -e para encontrar arquivos php, teriamos o seguinte resultado:
Outra funcionalidade interessante do ffuf é a capacidade de utilizar headers quando realiza o fuzzing, para isso temos duas opções:
-H: deve-se entrar com o nome do header e o valor (exemplo -H “Host: 127.0.0.1”), podemos usar mais de -H no comando.
-request: nesta opção deve-se colocar um arquivo com a requisição na qual será usada.
A demonstração desta opção será feita no vulnweb para procuramos por subdomínios e os comandos serão:
ffuf -w /usr/share/wordlists/SecLists-master/Discovery/DNS/subdomains-top1million-20000.txt -H “Host:FUZZ.vulnweb.com” -u http://vulnweb.com
ffuf -w /usr/share/wordlists/SecLists-master/Discovery/DNS/subdomains-top1million-20000.txt -request request.txt -u http://vulnweb.com
Além da capacidade de descoberta de arquivos e subdominios, ffuf consegue fazer ataques de brute force em formularios, para este exemplo usaremos o vulnweb. Faremos o brute force na conta do admin (), usando o seguinte comando:
ffuf -w /usr/share/wordlists/SecLists-master/Passwords/darkweb2017-top10000.txt -u http://127.0.0.1:3000/rest/user/login -request request.txt -X POST -d “[email protected]&password=FUZZ” -fs 26
Podemos usar diversas outras opções disponiveis do ffuf para conseguirmos mais resultados da aplicação web. Em nosso curso de pentest profissional você aprenderá sobre diversas outras ferramentas, metodologia e entre outros conteúdos para você se tornar um hacker ético profissional.