
Инструмент на Golang, помогающий исключать нерелевантные записи из вашего файла результатов ffuf.
К сожалению, несмотря на флаг "-ac", ffuf часто выдаёт множество нерелевантных записей. Поэтому я создал инструмент постобработки для фильтрации таких записей. Кроме того, я замечал, что при использовании "-ac" удаляется много релевантных записей — особенно когда ffuf встречает json- или xml-файлы: "-ac" может отбрасывать их полностью. Этот инструмент нужно запускать после завершения работы ffuf. Кроме того, первоначальную команду ffuf следует запускать со следующими флагами:
-o /folder/to/results.json
-od /folder/to/bodies
-of json (default)
Это заставляет ffuf записывать в json-формате файл со сводкой, а также сохранять тела ответов на диск. Указывать "-od" необязательно, но рекомендуется.
Я настоятельно рекомендую НЕ использовать флаг "-ac" — особенно если вы не хотите пропустить что-то интересное и хотите воспользоваться этим инструментом постобработки.
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)
Сначала запустите ffuf как обычно — я использовал очень простую минималистичную команду:
./ffuf -u yourtarget.com/FUZZ -w /path/to/wordlist -o /tmp/ffuf/results.json -od /tmp/ffuf/bodies/ -of json
После выполнения у вас должны появиться файл с результатами и все тела ответов в указанных папках. Теперь пришло время проанализировать данные и отфильтровать нерелевантные записи:
./ffufPostprocessing -result-file /tmp/ffuf/results.json -bodies-folder /tmp/ffuf/bodies/ -delete-bodies -overwrite-result-file
Особенно когда задан параметр -od (это означает, что у нас есть все HTTP-заголовки и тела ответов для каждого запрошенного URL), этот инструмент сначала проанализирует все тела ответов и дополнит исходный файл результатов json следующими данными:
Затем инструмент просканирует весь новый файл результатов и оставит только те записи, которые уникальны по известным типам метаданных. Если окажется, что одно из этих значений всегда различается (например, заголовки страниц могут сильно варьироваться), этот тип метаданных будет пропущен при проверке уникальности.
В целом этот инструмент всегда сохраняет небольшое количество записей, которые не являются уникальными. Например, если в файле результатов json содержится 300 записей с HTTP-статусом 403 (с одинаковыми словами, длиной и т. д.) и 2 уникальных ответа с HTTP-статусом 200, он не удалит все 300 записей со статусом 403. Он сохранит X из них в наборе данных.
Для ffufPostprocessing требуется golang 1.19
cd ffufPostprocessing
go build -o dist/ffufPostprocessing main.go
Мне всё равно. Делайте с этим инструментом что хотите.