
Outil Golang qui aide à supprimer les entrées non pertinentes de votre fichier de résultats ffuf.
Malheureusement - malgré son option "-ac", ffuf a tendance à produire beaucoup d'entrées non pertinentes. C'est pourquoi j'ai créé un outil de post-traitement pour filtrer ces entrées. De plus, j'ai vu beaucoup d'entrées pertinentes supprimées lorsque "-ac" était utilisé - surtout lorsque ffuf rencontre des fichiers json ou xml - "-ac" pourrait les supprimer entièrement. Cet outil doit être exécuté après que ffuf a terminé. De plus, la commande ffuf initiale doit être exécutée avec les options suivantes :
-o /folder/to/results.json
-od /folder/to/bodies
-of json (default)
Cela force ffuf à écrire un fichier récapitulatif au format json ainsi que les corps des réponses sur le disque. L'ajout de "-od" n'est pas obligatoire mais recommandé.
Je recommande fortement de NE PAS utiliser l'option "-ac" - surtout si vous ne voulez pas manquer des trucs sympas et que vous voulez utiliser cet outil de post-traitement.
Usage of ./ffufPostprocessing:
-result-file string
Path to the original ffuf result file (in json format)
-bodies-folder string
Path to the ffuf bodies folder (optional, if set results will be better)
-new-result-file string
Path to the new ffuf result file (optional)
-delete-bodies
Delete unnecessary body files after filtering (optional)
-overwrite-result-file
Overwrite original result file (optional)
-verbose
Verbose mode (Shows currently filtered results) (optional)
Exécutez d'abord ffuf comme d'habitude - j'ai utilisé une commande très simple et minimaliste :
./ffuf -u yourtarget.com/FUZZ -w /path/to/wordlist -o /tmp/ffuf/results.json -od /tmp/ffuf/bodies/ -of json
Après son exécution, vous devriez avoir le fichier de résultats ainsi que tous les corps dans vos dossiers spécifiés. Il est maintenant temps d'analyser les données et de filtrer les entrées non pertinentes :
./ffufPostprocessing -result-file /tmp/ffuf/results.json -bodies-folder /tmp/ffuf/bodies/ -delete-bodies -overwrite-result-file
En particulier lorsque -od est défini, ce qui signifie que nous avons tous les en-têtes http et les corps pour chaque url demandée - cet outil analysera initialement tous les corps et enrichira le fichier json de résultats initial avec les points de données suivants :
Ensuite, il analysera l'intégralité du nouveau fichier de résultats et ne conservera que les entrées qui sont uniques en fonction de types de métadonnées connus. S'il s'avère que l'une de ces valeurs est toujours différente (par exemple, le titre des pages peut varier considérablement) - ce type de métadonnées sera ignoré pour le contrôle d'unicité.
En général, cet outil conservera toujours un petit nombre d'entrées qui ne sont pas uniques. Par exemple, si le fichier json de résultats contient 300x http status 403 (avec des mots, une longueur, ... identiques) et 2 réponses http status 200 uniques, il ne supprimera pas toutes les 300 entrées http status 403. Il en conservera X dans l'ensemble de données.
ffufPostprocessing nécessite golang 1.19
cd ffufPostprocessing
go build -o dist/ffufPostprocessing main.go
Je m'en fiche. Faites ce que vous voulez avec cet outil.