O termo fuzzing se refere a técnica de testes que envia diversos tipos de inputs para certa interface a fim de estudar como ela se comporta e responde. Se nós fossemos utilizar o fuzzing para explorar de SQL Injection, nós enviaríamos diversos caracteres especiais aleatórios para verificar como o servidor iria responder.
Nós estamos acostumados a utilizar dicionários conhecidos para cada tipo de fuzzing, para ver se o servidor aceita ou recusa-os. Isso é feito porque, normalmente, o servidor não costuma a disponibilizar todos os diretórios, links e domínios disponíveis (a não ser que esteja terrivelmente configurado). Então, nos resta verificar para qual deles uma página é retornada. Por exemplo, se nós visitarmos https://0x6a70.com/doesnotexist, nós vamos receber um 404 Page Not Found
. Entretanto, se nós visitarmos https://0x6a70.com/vulnerabilidades, nós recebemos um 200 OK
, e nós vemos a página.
Isso é uma ideia básica do que é um web do que é realizar web fuzzing em busca de páginas e diretórios. Entretanto, nós não conseguimos fazer isso manualmente, pois iria demorar para sempre. E é para isso que temos ferramentas, como o ffuf, que automatiza esse processo para a gente. Essas ferramentas enviam dezenas de requests todo segundo, estudam as respostas HTTP e determinam se a página existe ou não.