
Crie sua Wordlist Personalizada para Fuzzing
CWFF é uma ferramenta que cria uma lista de palavras especial de alta qualidade para fuzzing/descoberta de conteúdo para você na maior velocidade possível usando concorrência e é fortemente inspirada por @tomnomnom's Who, What, Where, When, Wordlist #NahamCon2020.

CWFF [-h] [--threads] [--github] [--subdomains] [--recursive] [--js-libraries] [--connected-websites] [--juicy-files] [--use-filter-model] [-o] domain
positional arguments:
domain Target website(ofc)
optional arguments:
-h, --help Show this help message and exit
--threads The number of maximum concurrent threads to use (Default:1000)
--github Collect endpoints from a given github repo (ex:https://github.com/google/flax)
--subdomains Extract endpoints from subdomains also while search in the wayback machine!
--recursive Work on extracted endpoints recursively (Adds more endpoints but less accurate sometimes)!
--js-libraries Extract endpoints from JS libraries also, not just the JS written by them!
--connected-websites Include endpoints extracted from connected websites
--juicy-files Include endpoints extracted from juicy files like sitemap.xml and robots.txt
--use-filter-model Filter result endpoints with filter_model file
-o The output directory for the endpoints and parameters. (Default: website name)
Então, basicamente coleta endpoints e parâmetros do alvo e seus subdomínios usando várias fontes, sobre as quais falaremos agora:
Muitas ferramentas passam apenas pela página superior do wayback para economizar tempo, mas aqui percorremos todos os registros em pouco tempo, mas isso também faz com que demore muito quando você usa a flag --subdomains.
<script>CWFF tenta separar as bibliotecas JS dos arquivos JS realmente escritos pelos desenvolvedores do site, e faz isso olhando os nomes dos arquivos JS.
Por padrão, o CWFF extrai endpoints apenas dos arquivos JS escritos pelos desenvolvedores; para usar bibliotecas JS (na maioria das vezes não úteis), ative a flag --js-libraries.
--juicy-files para o CWFF, ele também extrairá endpoints de arquivos como Sitemap.xml e robots.txt (pode adicionar mais no futuro)--github, ele extrairá caminhos desse repositório usando a API do Github (nenhuma chave de API necessária).Apenas para esclarecer, o CWFF usará apenas os caminhos de arquivos e diretórios, portanto não extrairá endpoints de dentro dos próprios arquivos!
--connected-websites, o CWFF usará a API do site builtwith (precisa de chave, mas é gratuita) para extrair os sites conectados ao alvo a partir do perfil de relacionamento e, em seguida, extrai endpoints da fonte desses sites.Nota: você pode obter sua chave de API em esta página e definir a variável no arquivo
API_keys.py.
Após coletar endpoints de todas essas fontes, se você usar a flag --recursive, o CWFF extrairá recursivamente partes dos endpoints coletados.
parseq/javadoc/1.1.0/com se tornará todos estes endpoints:
parseq/javadoc/1.1.0/com
parseq/javadoc/1.1.0/
parseq/javadoc/
parseq/
javadoc/
1.1.0/
com
Nota: todos os endpoints/parâmetros coletados são limpos e ordenados sem duplicatas para ter um resultado único.
Claro que, após todas essas fontes e esse trabalho, haverá muitos endpoints indesejados/inúteis entre os importantes, e é aqui que a filtragem entra em ação para economizar tempo e recursos.
No CWFF, você pode detectar e remover os endpoints indesejados usando três métodos:
Todas essas opções de filtro podem ser fornecidas definindo as variáveis no arquivo filter_model.py e, em seguida, usando a flag --use-filter-model ao iniciar o CWFF. Se você não tem ideia de como definir essas variáveis, veja os comentários que deixei no arquivo; é o que eu mais uso e, na captura de tela, reduziu o número de endpoints coletados de 26.177 para 3.629.
Caso você tenha esquecido de usar a filtragem ao executar o CWFF, não se preocupe, estou aqui para ajudar 😄
Você pode usar o script filter.py para filtrar endpoints que você já possui da seguinte maneira, e ele carregará o arquivo filter_model.py automaticamente sem precisar executar o CWFF novamente:
python filter.py wordlist.txt output.txt
python3 -m pip install -r requirements.txt
python3 cwff.py --help
Se meu trabalho foi útil para você, sinta-se à vontade para me agradecer comprando um café para mim.
O CWFF foi criado para ajudar em testes de penetração e não é responsável por qualquer uso indevido ou fins ilegais.
Copiar um código desta ferramenta ou usá-lo em outra ferramenta é aceito, desde que você mencione a fonte :smile