Первое действие при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов. Для этой цели можно использовать программы типа Dirsearch и DirBuster. Но сегодня, я познакомлю вас с еще одной, не менее популярной тузлой — ffuf.
Еще по теме: Взлом веб-сервера на PHP
Установка и примеры использования FFuF на Kali Linux
ffuf — (аббревиатура от «Fuzz Fast You Fool!») — это инструмент веб-фаззинга с открытым исходным кодом, разработанный на языке Golang. Тулза используется для обнаружения скрытых файлов и директорий.
Что такое фаззинг? Это процесс отправки нестандартного потока данных для получения ошибок или неожиданного вывода. Иногда вывод фаззинг предоставляет хакеру золотую жилу в виде скрытой страницы авторизации, ошибок внедрения и т. д.
Далее покажу установку FFuF на Kali Linux и 30 примеров использования.
Установка FFuF на Kali Linux
В начале необходимо установить Golang на Kali Linux.
Теперь установим ffuf с помощью короткой команды:
1 |
go get github.com/ffuf/ffuf |
Или можно самостоятельно клонировать и собрать:
1 2 3 4 |
git clone https://github.com/ffuf/ffuf cd ffuf go get go build |
Не забудьте добавить каталог go/bin в переменную PATH, чтобы запускать инструмент из любого каталога.
Чтобы проверить правильность установки и версию инструмента, выполните:
1 |
ffuf -V |
Или так:
1 |
~/go/bin/ffuf |
Вот так команда выглядит при сканировании уязвимой машины Тiming с площадки Hack The Box:
1 |
ffuf -u http://timing.htb/FUZZ -t 256 -w php_files_common.txt |
- -w — словарь (лично я предпочитаю словари из SecLists)
- -u — URL
- -t — количество потоков
Далее, в качестве примера будет использоваться адрес https://test-url.
Примеры использования FFuF на Kali Linux
Основная команда, используемая для перебора каталогов сайта:
1 |
ffuf -w словарь -u https://test-url/FUZZ |
Фаззинг параметров:
1 |
ffuf -w словарь -u https://test-url?id=FUZZ |
Фаззинг заголовков:
1 |
ffuf -w словарь -u https://test-url -H "X-Header: FUZZ" |
Фаззинг URL методом POST:
1 |
ffuf -w словарь -u https://test-url -X POST -d "var=FUZZ" |
Фаззинг списка виртуальных хостов:
1 |
ffuf -w словарь -u https://test-url -H "Host: FUZZ" |
Поиск поддоменов без DNS-записей:
1 |
ffuf -w словарь -u https://test-url/ -H "Host: FUZZ.site.com" |
Фильтрация по коду состояния:
1 |
ffuf -w словарь -u https://test-url/FUZZ -fc 404,400 |
Фильтрации по количеству слов:
1 |
ffuf -w словарь -u https://test-url/FUZZ -fw количество-слов |
Фильтрация по количеству строк:
1 |
ffuf -w словарь -u https://test-url/FUZZ -fl количество-строк |
Фильтрация по размеру ответа:
1 |
ffuf -w словарь -u https://test-url/FUZZ -fs размер-ответа |
Фильтрация по количеству слов:
1 |
ffuf -w словарь -u https://test-url/FUZZ -fr шаблон-регулярного-выражения |
Изменение скорости отправки пакетов:
1 |
ffuf -w словарь -u https://test-url/FUZZ -rate скорость отправки-пакетов |
Запуск сканирования в течение определенного времени или меньше определенного времени (в секундах):
1 |
ffuf -w словарь -u https://test-url/FUZZ -maxtime 60 |
Фаззинг подстроки:
1 |
ffuf -w словарь -u https://test-url/testFUZZ |
Максимальное время (в секундах) на задание:
1 |
ffuf -w словарь -u https://test-url/FUZZ -maxtime-job 60 |
Обнаружение файлов с определенными расширениями:
1 |
ffuf -w словарь -u http://test-url/FUZZ -e .aspx,.php,.txt,.html |
Отправка запроса POST с нечеткими данными:
1 |
ffuf -w словарь -X POST -d “username=admin\&password=FUZZ” -u http://test-url/FUZZ |
Фаззинг определенных форматов:
1 |
ffuf -w словарь -u http://test-url/FUZZ/backup.zip |
Рекурсия для повторного выполнения той же задачи:
1 |
ffuf -u https://test-url/FUZZ -w словарь -recursion |
Увеличение задержки (в секундах) с помощью -p:
1 |
ffuf -u http://test-url/FUZZ/ -w словарь -p 1 |
Ускорения или замедление сканирования с помощью -t (по умолчанию 40):
1 |
fffuf -u http://test-url/FUZZ/ -w словарь -t 1000 |
Сохранить вывод с помощью -o и для формата -of
1 |
ffuf -u https://test-url/FUZZ/ -w словарь -o output.html -of html |
Запуск сканирования в тихом режиме:
1 |
ffuf -u https://test-url/FUZZ -w словарь -s |
Заключение
Хотя ffuf является мощным инструментом для фаззинга и перебора ресурсов веб-приложений, он также имеет свои ограничения и недостатки. Вот некоторые из них:
- Может привести к ложным срабатываниям: В процессе перебора, ffuf может порождать большое количество запросов, что может вызвать ложные срабатывания системы обнаружения (IDS) или сетевых правил.
- Требует дополнительного анализа результатов: ffuf предоставляет результаты в виде ответов от веб-приложения, и анализ этих результатов требует дополнительной работы.
- Может вызвать нагрузку на сервер: Использование ffuf с большим количеством запросов или некорректной настройкой может создать значительную нагрузку на целевой веб-сервер или сеть
- Ограниченный функционал: В сравнении с другими инструментами для тестирования безопасности веб-приложений, ffuf имеет ограниченный набор функций. Он предназначен в основном для перебора ресурсов и фаззинга, и не обладает таким широким спектром возможностей, как, например, Burp Suite или OWASP ZAP.
РЕКОМЕНДУЕМ:
Как использовать FFuF для перебора параметров GET-запросов?
Команда будет выглядеть так:
ffuf -u «http://target.com/page?param=FUZZ» -w /path/to/wordlist.txt
Где -u указывает целевой урл с параметром, а -w — путь к словарю.
Какая команда ищет XSS уязвимости и SQL-иньекции?