Найти в Дзене

Руководство по Fuzz Faster U Fool (ffuf)

Оглавление

В этой статье пойдет речь о том, как использовать Fuzz Faster U Fool (ffuf). Это полезный инструмент для фаззинга с открытым исходным кодом.

Введение

Fuzz Faster U Fool использует метод командной строки для веб-настройки на веб-сервере. Он был создан юзером из Twitter под ником @joohoi. Многие профессионалы высоко оценили ffuf с момента его появления в сети, особенно в плане его внимательности к ошибкам. Стоит отметить, что инструмент отличается высокой скоростью работы, универсальностью в использовании и способностью интегрироваться с другими программами.

Установка

Программа запускается в терминале Linux или в командной строке Windows. Обновление из исходного кода не сложнее, чем компиляция, за исключением включения флага «-u».

go get -u github.com/ffuf/ffuf

В связи с тем, что в данном примере пользователь использует Kali Linux, он найдет ffuf в репозиториях apt, что позволит установить его, выполнив простую команду.

apt install ffuf

-2

После установки данной программы, чтобы узнать ее параметры, все, что нужно сделать,- это просто использовать опцию «-h» для вызова справки.

ffuf -h

-3

Параметры ввода

Это параметры, которые помогают пользователям предоставлять необходимые данные для веб-поиска по URL-адресу с помощью списков слов.

  • Обычная атака

Для атаки по умолчанию нужно использовать параметры «-u» для целевого URL-адреса и «-w» для загрузки списка слов.

ffuf -u http://testphp.vulnweb.com/FUZZ/ -w dict.txt

После выполнения команды пользователь сосредоточится на полученных результатах.

  • Во-первых, стоит отметить, что по умолчанию он работает на HTTP с использованием метода GET.
  • Виден также статус кода ответа [200, 204, 301, 302, 307, 401, 403, 405}. Можно проследить прогресс выполняемой атаки.
-4
  • Использование нескольких списков слов

Иногда одного списка слов недостаточно, чтобы получить желаемые результаты. В этом случае пользователь может применить несколько списков слов одновременно, чтобы добиться своего. Fuzz Faster U Fool имеет возможность запускать столько списков слов, сколько необходимо для успешной атаки.

В данном примере пользователь предоставил программе доступ к двум словарям (dict.txt:W1 и dict.txt:W2). Она будет использовать их одновременно.

ffuf -u https://ignitetechnologies.in/W2/W1/ -w dict.txt:W1 -w dns_dict.txt:W2

-5
  • Игнорирование комментария к списку слов

Как правило, список слов по умолчанию имеет некоторые комментарии, которые могут повлиять на точность полученных результатов. В этом случае пользователь может использовать параметр «-ic», который поможет ему избавиться от любых ограничений. Иногда нужно больше сосредоточиться на атаке, а не на баннерах инструментов, для этого следует применить параметр «-s», который удалит любой баннер.

ffuf -u http://testphp.vulnweb.com/FUZZ/ -w dict.txt

Пользователь замечает, что некоторые комментарии отображены в результатах, если выполнить команду выше. После использования параметров «-s» и «-ic» любые комментарии и баннеры будут удалены.

ffuf -u http://testphp.vulnweb.com/FUZZ/ -w dict.txt -ic -s

-6
  • Расширения

Человек может выполнить поиск файла с определенным расширением на веб-сервере с помощью параметра «—e». Все, что нужно сделать, это просто указать расширение и имя файла вместе с параметром. Чтобы получить необходимый результат, надо выполнить подходящую команду.

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -e .php

-7
  • Запросы и различные режимы

Burp Suite – это профессиональная платформа для мониторинга безопасности веб-приложений. Ее различные инструменты действуют согласованно, чтобы провести успешное тестирование на проникновение. Функция «cluster bomb» дает возможность пользователю использовать несколько полезных нагрузок. Для каждого заданного местоположения существует отдельный пакет полезных нагрузок. Атака проходит через каждый пакет полезной нагрузки один за другим, проверяя все возможные варианты.

Существует несколько параметров этого инструмента, которые помогают использовать скрипт. Например, параметр «-request» позволяет применять запрос в атаке; «-request-proto» дает возможность определить сам параметр, «-mode» помогает выбрать режим атаки.

Прежде всего, человек использует случайные учетные данные на целевой URL-странице и настраивает прокси-сервер для захвата запроса в режиме перехвата на Burp Suite.

-8

Теперь на вкладке «Intercept» следует изменить предоставленные учетные данные с помощью добавления HFUZZ и WFUZZ. HFUZZ добавляется перед «uname» и WFUZZ – перед «pass». Затем надо скопировать и вставить этот запрос в текст и имя в соответствии с желанием пользователя. В данном случае человек назвал файл brute.txt.

-9

Теперь пользователь переходит к основной атаке, где параметр «-request» содержит текстовый файл запроса. «-request-proto» поможет ему создать прототип http, а «-mode» будет ответственен за атаку «Cluster bomb». Списки слов, которые пользователь использует (users.txt и pass.txt) состоят из инъекций SQL. Введя команду, представленную ниже, пользователь начнет атаку.

ffuf -request brute.txt -request-proto http -mode clusterbomb -w users.txt:HFUZZ -w pass.txt:WFUZZ -mc 200

Как можно увидеть в результатах атаки, пользователь успешно обнаружил, что SQL-инъекции эффективны для этой конкретной цели.

-10

Параметры сопоставления

Если пользователь хочет, чтобы ffuf показывал только те данные, которые важны для веб-фаззинга, ему следует обратить внимание на эти параметры.  Например, это могут быть HTTP-код, строки, слова, размер и регулярные выражения.

  1. Код HTTP

Чтобы понять этот параметр, нужно рассмотреть простую атаку, в которой пользователь сможет увидеть, какие HTTP-коды появляются в результатах.

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt

Точно понятно, что получены коды 302 HTTP и 200 HTTP.

-11

Если нужно просмотреть определенные атаки, например, для кода 200 HTTP, следует использовать параметр «-mc» вместе с конкретным номером. Чтобы проверить работу этого параметра, надо просто выполнить команду.

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -mc 200

-12
  • Строки

Инструмент выдает результаты для определенных строк в файле с помощью параметра «-ml». Пользователь может использовать его, указав нужные ему строки.

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -ml 15

-13
  • Слова

Аналогично, поскольку вышеперечисленные опции соответствуют функции, она может предоставить результат с определенным количеством слов. Чтобы добиться этого, следует использовать параметр «-mw» вместе с тем количеством слов, которые пользователь желает просмотреть в результатах.

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -mw 53

-14
  • Размер

Пользователь может использовать параметр «-ms» вместе с конкретным размером, который он хочет просмотреть в результатах.

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -ms 2929

-15
  • Регулярные выражения

Это последний из всех параметров сопоставления, доступных в этом инструменте. Пользователь собирается произвести фаззинг LFI, сопоставив строку с последующим шаблоном «root:x» для данного словаря.

Человек использует URL-адрес, который может обеспечить эту функциональность, и с помощью параметра «-mr» он определяет соответствующую строку «root:x».

Так выглядит специальный список слов.

-16

Используя этот список слов, пользователь введет приведенную ниже команду, чтобы добавить параметр «-mr» в скрипте атаки.

ffuf -u http://testphp.vulnweb.com/showimage.php?file=FUZZ -w dict2.txt -mr "root:x"

Здесь пользователь получил HTTP на ответ 200 для /etc/passwd для данного списка слов.

-17

Параметры фильтрации

Параметры фильтрации абсолютно противоположны параметрам соответствия. Пользователь может использовать эти опции, чтобы удалить ненужное из веб-фаззинга. Применимо также к HTTP-коду, строкам, словам, размеру и регулярным выражениям.

  1. Код HTTP

Для параметра «-fc» необходим конкретный код состояния HTTP, который пользователь хочет удалить из полученных результатов.

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -fc 302

-18
  • Строки

С помощью параметра «-fl» есть возможность удалить определенную строку из результата или отфильтровать ее из атаки.

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -fl 26

-19
  • Размер

Параметр «-fs» дает возможность отфильтровывать указанный размер, описанный пользователем во время атаки.

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -fs 2929

-20
  • Слова

Параметр «-fw» позволяет отфильтровывать количество слов из результатов, которые пользователь хочет получить.

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -fw 83

-21
  • Регулярные выражения

Параметр «-fr» дает возможность удалить определенное регулярное выражение. В данном случае пользователь пытается исключить файлы журналов из полученных результатов.

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -fr "log"

-22

Общие параметры

Ниже представлены общие параметры этого инструмента. Они полностью связаны с процессом веб-фаззинга.

  • Custom Auto Calibration

Известно, что способность компьютера или машины автоматически выполнять калибровку известна под названием «Auto Calibration». Калибровка – это процесс предоставления измерительному прибору информации, необходимой для понимания контекста, в котором он будет использоваться. При сборе данных калибровка компьютера обеспечивает точность его работы.

Человек может настроить эту функцию в соответствии с его потребностями с помощью параметра «-acc», который нельзя использовать без параметра «-ac».

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -acc -ac -fl 26 -ac -fs 2929 -ac -fw 54

-23
  • Цвет

Иногда разделение по цветам помогает привлечь дополнительное внимание ко всем деталям, имеющим значение в результатах. За это отвечает параметр «-c», он помогает разделить данные по категориям.

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -c

-24
  • Максимальное время выполнения задачи

Если человек хочет провести фаззинг в течение ограниченного периода времени, он может использовать параметр «-maxtime». Следует ввести команду, чтобы указать выбранный временной интервал.

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -maxtime 5

-25
  • Максимальное время выполнения работы

С помощью параметра «-max time-job» пользователь может установить ограничение по времени для конкретной работы. Используя эту команду, человек пытается ограничить время выполнения задания или запроса.

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -maxtime-job 2

-26
  • Задержка

С помощью параметра «-p» пользователь добавит определенную задержку для каждого запроса, предлагаемого атакой. Благодаря этой функции запрос более эффективен и предоставляет более четкие результаты.

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -p 1

-27
  • Скорость запроса

Пользователь может выбрать нужную ему скорость запросов для каждой своей атаки с помощью параметра «-rate». К примеру, человек создает запрос в секунду в соответствии с желаемой атакой.

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -rate 500

-28
  • Функции ошибок

Существует три параметра, которые поддерживают функцию ошибки. Первым параметром является «-se», он представляет собой «ложную ошибку». В нем говорится, является ли следующий запрос подлинным или нет. Второй параметр «-sf» остановит атаку, когда более 95% запросов засчитаны как ошибка. Третьим и последним параметром является «-sa», он представляет собой комбинацию предыдущих параметров.

В данном примере пользователь использует параметр «-se».

Ffuf -u http://ignitetechnologies.in/W2/W1/ -w dict.txt:W1 -w dns_dict.txt:W2 -se

-29
  • Режим «Verbose»

Как многие уже знают, режим «Verbose» — это функция, используемая во многих операционных системах ПК и языках программирования. Она предоставляет дополнительную информацию о том, что делает компьютер и какие драйверы и приложения он загружает при инициализации. В программировании данный режим предоставляет человеку точные выходные данные для целей отладки, что облегчает саму отладку программы. Применяется параметр «-v».

Ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -v

-30
  • Потоки выполнения

Параметр «-t» используется для ускорения или замедления процесса. По умолчанию он установлен на 40. Если пользователь хочет ускорить процесс, нужно увеличить его значение.

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -t 1000

-31

Параметры вывода

Пользователь будет сохранять результаты проведенных атак в целях ведения учета, улучшения читаемости и нахождения потенциальных ссылок. Параметр «-o» нужен для сохранения выходных данных, но нужно указать его формат с помощью другого параметра «-of».

  • Вывод данных в формате HTML

Пользователь использует параметр «-of» и выбирает формат HTML. С помощью команды он может сохранить отчет в формате HTML.

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -o file.html -of html

-32

Теперь, после завершения атаки, нужно проверить, соответствует ли файл с выходными данными данному формату или нет. Как видно, сам файл относится к HTML.

-33
  • Вывод данных в формате CSV

Аналогично, можно создавать файлы CSV с помощью параметра «-of», где csv – это значения, разделенные запятыми. К примеру:

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -o file.csv -of csv

-34

Теперь, после завершения атаки, нужно проверить, соответствует ли файл с выходными данными данному формату или нет. Как видно, сам файл относится к CSV.

-35
  • Вывод данных во всех доступных форматах

Аналогично, если нужно получить данные во всех форматах, следует использовать параметр «-of all». Например, это может быть json, ejson, html, md, csv, ecsv.

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -o output/file -of all

Теперь, после завершения атаки, нужно проверить все файлы. Видно, что они были сохранены в различных форматах.

-36

Опции HTTP

Иногда для запуска веб-фаззинга требуются подробности, такие как HTTP-запрос, файлы cookie, HTTP-заголовок.

  1. Тайм-аут

Тайм-аут действует как крайний срок для выполнения события. Параметр «-timeout» помогает активировать данную опцию.

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -timeout 5

-37
  • Заголовок хоста

Если пользователь хочет выполнить фаззинг поддомена, он может использовать параметр «-H» вместе со списком слов доменного имени.

Ffuf -u https://google.com -w dns_dict.txt -mc 200 -H “HOST: FUZZ.google.com”

-38
  • Рекурсия

Рекурсия – это механизм повторного использования объектов. Если программа требует, чтобы пользователь получил доступ к функции внутри другой функции, это называется рекурсивным вызовом функции. Используя параметр «-recursion», пользователь может реализовать эту функциональность в его атаках.

ffuf -u "http://testphp.vulnweb.com/FUZZ/" -dict.txt -recursion

-39
  • Атака с помощью Cookie

Иногда веб-фаззинг не эффективен на аутентифицированном сайте без аутентификации. Есть параметр «-b», с помощью которого пользователь может достичь своей цели, предоставив файлы Cookie сеанса.

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -b "PHPSESSID:"7aaaa6d88edcf7cd2ea4e3853ebb8bde""

-40
  • Replay-Proxy

Существуют ограничения по скорости при использовании функции Intruder в бесплатной версии пакета Burp (Community Edition). Атака была сильно замедлена, и каждый новый «приказ» еще больше замедлял ее.

В данном случае пользователь использует прокси-сервер Burp Suite для получения результатов и их оценки. Во-первых, следует установить прокси-сервер localhost на порту под номером 8080.

-41

Теперь пользователь использует параметр «-replay-proxy», который помогает ему получить локальный прокси-сервер хоста, что человек установил на предыдущем шаге на порту под номером 8080.

ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -replay-proxy http://127.0.0.1:8080 -v -mc 200

-42

Эта атака покажет результаты на двух платформах. Первая платформа на терминале Kali, а вторая — на вкладке «HTTP history» в Burp Suite. С помощью различных методов пользователь может лучше понять цель и проанализировать результаты атаки.

-43

Заключение

Ffuf часто сравнивают с такими инструментами, как dirb или dirbuster, что, хотя и является понятным в определенной степени, не является разумным решением. Хотя FFUF можно использовать для атаки брутфорс, его истинная мощь заключается в простоте. Лучшим аналогом для него будет Burp Suite Intruder или Turbo Intruder.

Важно! Информация исключительно в учебных целях. Пожалуйста, соблюдайте законодательство и не применяйте данную информацию в незаконных целях.

ЧИТАТЬ ВСЕ СТАТЬИ НА САЙТЕ | ПОДПИСЫВАЙТЕСЬ НА НАШ TELEGRAM КАНАЛ