
Créez votre liste de mots personnalisée pour le fuzzing
CWFF est un outil qui crée une liste de mots spéciale et de haute qualité pour le fuzzing / la découverte de contenu, à la vitesse la plus élevée possible en utilisant la concurrence, et il est fortement inspiré par la présentation Who, What, Where, When, Wordlist #NahamCon2020 de @tomnomnom.

CWFF [-h] [--threads] [--github] [--subdomains] [--recursive] [--js-libraries] [--connected-websites] [--juicy-files] [--use-filter-model] [-o] domain
positional arguments:
domain Site web cible (évidemment)
optional arguments:
-h, --help Affiche ce message d'aide et quitte
--threads Nombre maximum de threads concurrents à utiliser (par défaut : 1000)
--github Collecte les points d'accès depuis un dépôt GitHub donné (ex : https://github.com/google/flax)
--subdomains Extrait également les points d'accès des sous-domaines lors de la recherche dans la Wayback Machine !
--recursive Travaille récursivement sur les points d'accès extraits (ajoute plus de points d'accès mais parfois moins précis) !
--js-libraries Extrait également les points d'accès des bibliothèques JS, pas seulement du JS écrit par eux !
--connected-websites Inclut les points d'accès extraits des sites web connectés
--juicy-files Inclut les points d'accès extraits de fichiers juteux comme sitemap.xml et robots.txt
--use-filter-model Filtre les points d'accès obtenus avec un fichier filter_model
-o Le répertoire de sortie pour les points d'accès et les paramètres. (par défaut : nom du site web)
Donc, cela collecte essentiellement les points d'accès et les paramètres de la cible et de ses sous-domaines en utilisant plusieurs sources dont nous allons parler maintenant :
Archive Wayback Machine : elle parcourt tous les enregistrements du site web cible et de ses sous-domaines et extrait les URL qui renvoient un code de statut 200.
Beaucoup d'outils ne parcourent que la première page de Wayback pour gagner du temps, mais ici nous parcourons tous les enregistrements en peu de temps, mais cela rend aussi le processus plus long lorsque vous utilisez le flag --subdomains.
Fichiers JavaScript collectés pendant la phase Wayback et ceux collectés en analysant la page cible à la recherche de balises <script>
CWFF essaie de séparer les bibliothèques JS des fichiers JS réellement écrits par les développeurs du site, en examinant les noms des fichiers JS.
Par défaut, CWFF extrait les points d'accès des fichiers JS écrits uniquement par les développeurs ; pour utiliser les bibliothèques JS (généralement peu utiles), activez le flag --js-libraries.
Index CDX de Common Crawl et Alien Vault OTX (Open Threat Exchange)
Si vous donnez à CWFF le flag --juicy-files, il extraira également les points d'accès de fichiers comme Sitemap.xml et robots.txt (pourrait en ajouter d'autres à l'avenir)
Si vous donnez à CWFF un dépôt GitHub avec le flag --github, il extraira les chemins de ce dépôt via l'API GitHub (aucune clé API nécessaire).
Pour être clair, CWFF n'utilisera que les chemins des fichiers et répertoires, il n'extraira donc pas les points d'accès à l'intérieur des fichiers eux-mêmes !
Avec le flag --connected-websites, CWFF utilise l'API BuiltWith (nécessite une clé, mais elle est gratuite) pour extraire les sites web connectés à la cible à partir du profil de relations, puis extrait les points d'accès de ces sites web sources.
Après avoir collecté les points d'accès depuis toutes ces sources, si vous utilisez le flag --recursive, CWFF extrait récursivement des parties des points d'accès collectés.
parseq/javadoc/1.1.0/com deviendra tous ces points d'accès :
parseq/javadoc/1.1.0/com
parseq/javadoc/1.1.0/
parseq/javadoc/
parseq/
javadoc/
1.1.0/
com
Remarque : tous les points d'accès / paramètres collectés sont nettoyés et triés, sans doublons, pour obtenir un résultat unique.
Bien sûr, après toutes ces sources et ce travail, il y aura beaucoup de points d'accès indésirables / inutiles parmi les importants, et c'est là que le filtrage entre en jeu pour gagner du temps et des ressources.
Dans CWFF, vous pouvez détecter et supprimer les points d'accès indésirables en utilisant trois méthodes :
Toutes ces options de filtre peuvent être définies en modifiant les variables dans le fichier filter_model.py, puis en utilisant le flag --use-filter-model au lancement de CWFF. Si vous ne savez pas comment définir ces variables, consultez les commentaires que j'ai laissés dans le fichier ; c'est celui que j'utilise principalement, et dans la capture d'écran, il a réduit le nombre de points d'accès collectés de 26 177 à 3 629.
Si vous avez oublié d'utiliser le filtrage lors de l'exécution de CWFF, ne vous inquiétez pas, je pense à vous 😄
Vous pouvez utiliser le script filter.py pour filtrer les points d'accès que vous avez de la manière suivante, et il chargera automatiquement le fichier filter_model.py sans avoir à relancer CWFF :
python filter.py wordlist.txt output.txt
python3 -m pip install -r requirements.txt
python3 cwff.py --help
Si mon travail vous a été utile, n'hésitez pas à me remercier en m'offrant un café.
CWFF est créé pour aider dans les tests de pénétration et n'est pas responsable de toute utilisation abusive ou illégale.
Copier un code de cet outil ou l'utiliser dans un autre outil est accepté à condition de mentionner la source :smile
Remarque : vous pouvez obtenir votre clé API depuis cette page et définir la variable dans le fichier API_keys.py.