Было разработано множество инструментов, которые создают HTTP-запрос и позволяют пользователю изменять его содержимое. Фаззинг работает так же. Пользователь может несколько раз отправить на сервер один и тот же запрос с изменением определенного запроса. Когда этот определенный раздел заменяется переменной из списка или каталога, это называется фаззингом.
В этой статье мы узнаем, как мы можем использовать wfuzz, что означает "фаззер веб-приложений", который является интересным инструментом веб-фаззинга с открытым исходным кодом. С момента его выпуска многие люди тяготели к wfuzz, особенно в сценарии Bug Bounty. Итак, давайте погрузимся в процесс обучения.
Введение в Wfuzz
Wfuzz — это написанное на Python приложение для фаззинга веб-приложений с множеством опций. Он предлагает различные фильтры, которые позволяют заменить простой веб-запрос на требуемое слово, заменив его на переменную "FUZZ".
Настройка
Чтобы установить wfuzz с помощью pip, нам нужно сделать так:
pip3 install wfuzz
То же самое может быть достигнуто путем установки из исходного кода с помощью git.
git clone https://github.com/xmendez/wfuzz.git
Меню справки для просмотра всех рабочих опций выглядит следующим образом:
wfuzz -h
wfuzz --help
Wfpayload и Wfencode
При установке инструмента из исходного кода доступны скомпилированные исполняемые файлы с именами wfpayload и wfencode. Они отвечают за генерацию и кодирование полезной нагрузки. Их можно использовать индивидуально. Например, команда для генерации цифр от 0 до 15 выглядит следующим образом:
./wfpayload -z range,0-15
Как видите, есть ошибка pycurl. Её можно убрать так:
apt --purge remove python3-pycurl && apt install libcurl4-openssl-dev libssl-dev
Теперь, когда вы запускаете wfencode, который представляет собой модуль для кодировки предоставленного ввода с использованием хеш-алгоритма, теперь нет ошибки pycurl.
./wfencode -e md5 ignite
Докер запускает wfuzz
Wfuzz также можно запустить с помощью докера следующим образом, используя репозиторий ghcr.io. Соответствующую команду можно запустить, заменив последнюю переменную wfuzz.
docker run -v $(pwd)/wordlist:/wordlist/ -it ghcr.io/xmendez/wfuzz wfuzz
Полезная нагрузка
Полезная нагрузка в Wfuzz является источником входных данных. Доступные полезные нагрузки можно просмотреть, выполнив команду:
wfuzz -e payloads
Детальный вид также можно просмотреть с помощью фильтра slice :
wfuzz -z help --slice "list"
Фаззинг поддоменов
Обнаружение поддоменов чрезвычайно полезно в сценариях пентестинга. Часто злоумышленники запускают атаки на поддомены, а не на основные домены, и это можно фаззить следующим образом:
Здесь -c цвет кодирует коды выходных ответов
-Z указывает URL-адрес для ввода в режиме сканирования и игнорирует любую ошибку подключения.
-w указывает использование списка слов при переборе поддоменов.
wfuzz -c -Z -w subdomains.txt http://FUZZ.vulnweb.com
То же самое может быть достигнуто путем предоставления встроенного списка поддоменов. Только полезная нагрузка (опция -z) должна поставляться со "списком" в качестве входных данных. Список предоставляется в формате ITEM1-ITEM2-ITEM3, например:
wfuzz -z list,CVS-testphp-admin-svn http://testphp.vulnweb.com/FUZZ
wfuzz -z list,CVS-testphp-admin-svn http://FUZZ.vulnweb.com/
Фаззинг каталогов
Каталоги могут быть пронумерованы с помощью wfuzz точно так же, как и с gobuster, с помощью прилагаемого списка слов. Это можно сделать с помощью флага -w и ввода пути к списку слов:
wfuzz -w wordlist/general/common.txt http://testphp.vulnweb.com/FUZZ
Как вы можете видеть на снимке экрана выше, все результаты, включая ненайденную страницу, были сдамплены, что делает утомительным просмотр результатов. Поэтому для сортировки результатов мы можем видеть флаг показа кода (-sc).Другие флаги такие:
–hc/sc CODE #Скрыть/показать по коду в ответе
–hl/sl NUM #ide/Показать по количеству строк в ответе
–hw/sw NUM #ide/Показать по количеству слов в ответе
–hc/sc NUM #ide/Показать по количеству символов в ответе
wfuzz -w wordlist/general/common.txt --sc 200,301 http://testphp.vulnweb.com/FUZZ
Сохранение результатов фаззинга
Вывод Wfuzz также можно сохранить в нескольких форматах с помощью параметра -f.
Параметр -f позволяет пользователю ввести путь к файлу и указать printer (который форматирует вывод) после запятой.
wfuzz -w wordlist/general/common.txt -f /tmp/output,csv --sc 200,301 http://testphp.vulnweb.com/FUZZ
cat /tmp/output
Вместо csv можно указать любой из принтеров
wfuzz -e printers
Основные фильтры списка слов
Есть определенные подаргументы, которым может предшествовать фильтр -z или -w, чтобы поэкспериментировать с ними. Эти фильтры:
–zP <params>: аргументы для указанной полезной нагрузки.
–zD <по умолчанию>: параметр по умолчанию для указанной полезной нагрузки.
–zE <энкодер>: кодировщик для указанной полезной нагрузки.
Итак, чтобы указать список слов с полезной нагрузкой, мы можем сделать это так:
wfuzz -z file --zD wordlist/general/common.txt --sc 200,301 http://testphp.vulnweb.com/FUZZ
Чтобы скрыть код ответа HTTP 404, можно сделать так:
wfuzz -z file --zD wordlist/general/common.txt --hc 404 http://testphp.vulnweb.com/FUZZ
Двойной фаззинг
Подобно тому, как параметр полезной нагрузки может быть профазен использованием ключевого слова «FUZZ», множественный фаззинг также возможен с указанием ключевых слов:
FUZ2Z — 2-й параметр
FUZ3Z — 3-й параметр
FUZ4Z — 4-й параметр
И каждому параметру может быть выделен свой собственный список слов. Первый "-w" означает первый FUZZ. Второй "-w" соответствует второму FUZ2Z и так далее.
wfuzz -w wordlist/general/common.txt -w wordlist/general/common.txt --hc 404 http://testphp.vulnweb.com/FUZZ/FUZ2Z
Брутфорс логина
HTTP-ответы можно взломать с помощью wfuzz. Например, веб-сайт testphp делает запрос POST к серверной части и передает "uname" и "pass" в качестве аргументов на страницу userinfo.php.
То же самое можно реализовать с помощью wfuzz следующим образом: Аргумент -d указывает данные сообщения, которые будут отправлены вместе с запросом.
wfuzz -z file,wordlist/others/common_pass.txt -d "uname=FUZZ&pass=FUZZ" --hc 302 http://testphp.vulnweb.com/userinfo.php
Как видите, правильные учетные данные "тест-тест" были найдены. Мы использовали общий файл как для имени пользователя, так и для пароля. То же самое можно сделать, предоставив разные файлы для имен пользователей и паролей, например:
-c предназначен для цветового кодирования выходного ответа, который можно пропустить.
wfuzz -z file,users.txt -z file,pass.txt --sc 200 -d "uname=FUZZ&pass=FUZ2Z" http://testphp.vulnweb.com/userinfo.php
Фаззинг файлов cookie
Чтобы отправить пользовательский файл cookie вместе с запросом в разные каталоги, мы можем использовать плагин "-b". Это добавит файл cookie к отправленному HTTP-запросу.
Полезный сценарий:
- Отравление печеньками
- Перехват сеанса
- Повышение привилегий
wfuzz -z file,wordlist/general/common.txt -b cookie=secureadmin -b cookie2=value2 --hc 404 http://testphp.vulnweb.com/FUZZ
В приведенном выше сценарии мы добавили 2 статических файла cookie в несколько каталогов. Теперь мы также можем фаззить параметр cookie следующим образом:
wfuzz -z file,wordlist/general/common.txt -b cookie=FUZZ http://testphp.vulnweb.com/
Фаззинг заголовка
Заголовок HTTP может быть добавлен в запрос, отправляемый wfuzz. Заголовки HTTP могут изменить поведение всей веб-страницы. Пользовательские заголовки могут быть изменены или введены в исходящий запрос.
Полезные сценарии:
- Внедрение заголовков HTTP
- SQL-инъекции
- Внедрение заголовка хоста
wfuzz -z file,wordlist/general/common.txt -H "X-Forwarded-By: 127.0.0.1" -H "User-Agent: Firefox" http://testphp.vulnweb.com/FUZZ
HTTP ОПЦИИ для фазинга
Существуют различные доступные методы HTTP-запроса/параметров, которые можно указать с помощью флага "-X". В следующем примере мы вставили следующие параметры в текстовый файл с именем options.txt.
GET
HEAD
POST
PUT
DELETE
CONNECT
OPTIONS
TRACE
PATCH
wfuzz -c -w options.txt --sc 200 -X FUZZ “http://testphp.vulnweb.com”
Как вы могли видеть, три допустимых варианта вернули код ответа 200.
То же самое можно ввести в строке с помощью полезной нагрузки «list» следующим образом:
wfuzz -z list,GET-HEAD-POST-TRACE-OPTIONS -X FUZZ http://testphp.vulnweb.com/
Фаззинг через прокси
Wfuzz также может направлять запросы через прокси. В следующем примере прокси-сервер Burp активен на порту 8080, и, как вы можете видеть, запрос перехвачен в перехвате burp.
wfuzz -z file,wordlist/general/common.txt -p localhost:8080 http://testphp.vulnweb.com/FUZZ
То же самое может быть достигнуто с помощью прокси-сервера SOCKS следующим образом:
wfuzz -z file,wordlist/general/common.txt -p localhost:9500:SOCKS5 http://testphp.vulnweb.com/FUZZ
Фаззинг аутентификации
Wfuzz также может устанавливать заголовки аутентификации и предоставлять средства аутентификации через HTTP-запросы.
Флаги:
–basic: обеспечивает базовую аутентификацию по имени пользователя и паролю.
–ntlm: проверка подлинности Windows
--digest: согласование с веб-сервером через дайджест-доступ
В следующем примере я предоставляю встроенный список с двумя переменными и –basic input для перебора веб-сайта httpwatch.com.
wfuzz -z list,nonvalid-httpwatch --basic FUZZ:FUZZ https://www.httpwatch.com/httpgallery/authentication/authenticatedimage/default.aspx
Рекурсивный фазинг
-R может указывать уровни рекурсии при фаззинге каталогов или параметров. Проще говоря, рекурсия означает фаззинг на нескольких разных уровнях каталогов, таких как /dir/dir/dir и т. д. В следующем примере мы выполняем рекурсию на уровне 1 со встроенным списком, содержащим 3 каталога: admin, CVS и cgi-bin. Обратите внимание, как каталог "-" в его имени может быть указан как встроенный
wfuzz -z list,"admin-CVS-cgi\-bin" -R1 http://testphp.vulnweb.com/FUZZ
Принтеры и вывод
Принтеры в wfuzz относятся ко всем форматам, в которых может обрабатываться вывод полезной нагрузки. Его можно просмотреть, используя аргумент -e, за которым следует принтер. Кроме того, флаг "-o" также может указывать формат вывода.
wfuzz -e printers
wfuzz -o json -w wordlist/general/common.txt http://testphp.vulnweb.com/FUZZ
Кодировщики
Различные кодировщики доступны в wfuzz. Одним из таких кодировщиков, который мы видели ранее, был md5. Другие кодировщики можно просмотреть, используя флаг "-e" с аргументом кодировщиков.
wfuzz -e encoders
Можно использовать веб-сайт для каталогов, используя вывод MD5 следующим образом:
wfuzz -z file,wordlist/general/common.txt,md5 http://testphp.vulnweb.com/FUZZ
Хранение и восстановление фазинга
Чтобы упростить сканирование, wfuzz может сохранять и восстанавливать сеансы, используя флаг "–dump-recipe" и "–recipe".
wfuzz -w wordlist/general/common.txt --dump-recipe /tmp/recipe --sc 200,301 http://testphp.vulnweb.com/FUZZ
wfuzz --recipe /tmp/recipe
Игнорирование исключений и ошибок
Часто во время фаззинга возникают различные ошибки и исключения, которые может выдавать веб-сайт. Опция "-Z" может заставить wfuzz игнорировать эти ошибки и исключения. Сначала мы запускаем обычную процедуру фаззинга поддоменов, а затем с опцией -Z:
wfuzz -z list,support-web-none http://FUZZ.google.com/
wfuzz -z list,support-web-none -Z http://FUZZ.google.com/
Как вы могли видеть, -Z игнорирует эту ошибку внизу. Кроме того, любой недопустимый ответ также можно скрыть следующим образом:
wfuzz -z list,support-web-none -Z --hc “XXX” http://FUZZ.google.com/
Фильтрация результатов
Существует множество фильтров для управления полезной нагрузкой или выходными данными.
wfuzz --filter-help
wfuzz -z range --zD 0-1 -u http://testphp.vulnweb.com/artists.php?artist=FUZZ --efield r
Ими можно управлять с помощью аргументов "-filter, –slice, –field и –efield".
Например, чтобы просмотреть необработанные ответы на отправленную полезную нагрузку и выполненный полный HTTP-запрос, вы можете использовать опцию "-efield r".
wfuzz -z range --zD 0-1 -u http://testphp.vulnweb.com/artists.php?artist=FUZZ --efield r
Однако, если нужен только предполагаемый URL-адрес, это можно сделать, указав URL-адрес –efield.
wfuzz -z range --zD 0-1 -u http://testphp.vulnweb.com/artists.php?artist=FUZZ --efield url --efield h
Точно так же, чтобы отфильтровать результаты на основе кода ответа и длины страницы (строки больше 97), вы можете сделать это следующим образом:
wfuzz -z range,0-10 --filter "c=200 and l>97" http://testphp.vulnweb.com/listproducts.php?cat=FUZZ
Сессии в wfuzz
Сессия в wfuzz — это временный файл, который можно сохранить, а затем взять, повторно обработать и постобработать. Это полезно в ситуациях, когда один сохраненный результат уже требует изменений или аналитику нужно найти что-то в результатах. Фильтр "–oF" может сохранять выходные данные сеанса в файл.
wfuzz --oF /tmp/session -z range,0-10 http://testphp.vulnweb.com/listproducts.php?cat=FUZZ
Этот файл сеанса теперь можно снова открыть и использовать с помощью полезной нагрузки wfuzzp следующим образом:
wfuzz -z wfuzzp,/tmp/session FUZZ
Один из таких примеров этой фильтрации из ранее сохраненного сеанса: мы находим уязвимость SQL-инъекции, используя регулярное выражение Python, предназначенное для чтения ответов после того, как запрос изменяет параметр, добавляя апостроф (‘) и снова фаззинг. "-A" отображает подробный вывод.
Регулярное выражение r.params.get=+’\’ добавляет апостроф (‘) в параметр get. r означает необработанный ответ.
wfuzz -z range,1-5 --oF /tmp/session http://testphp.vulnweb.com/artists.php?artist=FUZZ
wfuzz -z wfuzzp,/tmp/session --prefilter "r.params.get=+'\''" -A FUZZ
Как видите, запрос номер 4 выдает ошибку SQL, что указывает на SQL-инъекцию. Дополнительные операции с регулярными выражениями см. здесь (https://wfuzz.readthedocs.io/en/latest/library/guide.html).
Заключение
Wfuzz — это универсальный инструмент, который может выполнять больше, чем просто перечисление каталогов, и действительно помогает пентестеру в его анализе. Это быстрый сканер, который прост в использовании и написан на Python для переносимости. Надеюсь, вам понравилась статья. Спасибо за прочтение.
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/a-detailed-guide-on-wfuzz/
В этой статье мы узнаем, как мы можем использовать wfuzz, что означает "фаззер веб-приложений", который является интересным инструментом веб-фаззинга с открытым исходным кодом. С момента его выпуска многие люди тяготели к wfuzz, особенно в сценарии Bug Bounty. Итак, давайте погрузимся в процесс обучения.
Введение в Wfuzz
Wfuzz — это написанное на Python приложение для фаззинга веб-приложений с множеством опций. Он предлагает различные фильтры, которые позволяют заменить простой веб-запрос на требуемое слово, заменив его на переменную "FUZZ".
Настройка
Чтобы установить wfuzz с помощью pip, нам нужно сделать так:
pip3 install wfuzz
То же самое может быть достигнуто путем установки из исходного кода с помощью git.
git clone https://github.com/xmendez/wfuzz.git
Меню справки для просмотра всех рабочих опций выглядит следующим образом:
wfuzz -h
wfuzz --help
Wfpayload и Wfencode
При установке инструмента из исходного кода доступны скомпилированные исполняемые файлы с именами wfpayload и wfencode. Они отвечают за генерацию и кодирование полезной нагрузки. Их можно использовать индивидуально. Например, команда для генерации цифр от 0 до 15 выглядит следующим образом:
./wfpayload -z range,0-15
Как видите, есть ошибка pycurl. Её можно убрать так:
apt --purge remove python3-pycurl && apt install libcurl4-openssl-dev libssl-dev
Теперь, когда вы запускаете wfencode, который представляет собой модуль для кодировки предоставленного ввода с использованием хеш-алгоритма, теперь нет ошибки pycurl.
./wfencode -e md5 ignite
Докер запускает wfuzz
Wfuzz также можно запустить с помощью докера следующим образом, используя репозиторий ghcr.io. Соответствующую команду можно запустить, заменив последнюю переменную wfuzz.
docker run -v $(pwd)/wordlist:/wordlist/ -it ghcr.io/xmendez/wfuzz wfuzz
Полезная нагрузка
Полезная нагрузка в Wfuzz является источником входных данных. Доступные полезные нагрузки можно просмотреть, выполнив команду:
wfuzz -e payloads
Детальный вид также можно просмотреть с помощью фильтра slice :
wfuzz -z help --slice "list"
Фаззинг поддоменов
Обнаружение поддоменов чрезвычайно полезно в сценариях пентестинга. Часто злоумышленники запускают атаки на поддомены, а не на основные домены, и это можно фаззить следующим образом:
Здесь -c цвет кодирует коды выходных ответов
-Z указывает URL-адрес для ввода в режиме сканирования и игнорирует любую ошибку подключения.
-w указывает использование списка слов при переборе поддоменов.
wfuzz -c -Z -w subdomains.txt http://FUZZ.vulnweb.com
То же самое может быть достигнуто путем предоставления встроенного списка поддоменов. Только полезная нагрузка (опция -z) должна поставляться со "списком" в качестве входных данных. Список предоставляется в формате ITEM1-ITEM2-ITEM3, например:
wfuzz -z list,CVS-testphp-admin-svn http://testphp.vulnweb.com/FUZZ
wfuzz -z list,CVS-testphp-admin-svn http://FUZZ.vulnweb.com/
Фаззинг каталогов
Каталоги могут быть пронумерованы с помощью wfuzz точно так же, как и с gobuster, с помощью прилагаемого списка слов. Это можно сделать с помощью флага -w и ввода пути к списку слов:
wfuzz -w wordlist/general/common.txt http://testphp.vulnweb.com/FUZZ
Как вы можете видеть на снимке экрана выше, все результаты, включая ненайденную страницу, были сдамплены, что делает утомительным просмотр результатов. Поэтому для сортировки результатов мы можем видеть флаг показа кода (-sc).Другие флаги такие:
–hc/sc CODE #Скрыть/показать по коду в ответе
–hl/sl NUM #ide/Показать по количеству строк в ответе
–hw/sw NUM #ide/Показать по количеству слов в ответе
–hc/sc NUM #ide/Показать по количеству символов в ответе
wfuzz -w wordlist/general/common.txt --sc 200,301 http://testphp.vulnweb.com/FUZZ
Сохранение результатов фаззинга
Вывод Wfuzz также можно сохранить в нескольких форматах с помощью параметра -f.
Параметр -f позволяет пользователю ввести путь к файлу и указать printer (который форматирует вывод) после запятой.
wfuzz -w wordlist/general/common.txt -f /tmp/output,csv --sc 200,301 http://testphp.vulnweb.com/FUZZ
cat /tmp/output
Вместо csv можно указать любой из принтеров
wfuzz -e printers
Основные фильтры списка слов
Есть определенные подаргументы, которым может предшествовать фильтр -z или -w, чтобы поэкспериментировать с ними. Эти фильтры:
–zP <params>: аргументы для указанной полезной нагрузки.
–zD <по умолчанию>: параметр по умолчанию для указанной полезной нагрузки.
–zE <энкодер>: кодировщик для указанной полезной нагрузки.
Итак, чтобы указать список слов с полезной нагрузкой, мы можем сделать это так:
wfuzz -z file --zD wordlist/general/common.txt --sc 200,301 http://testphp.vulnweb.com/FUZZ
Чтобы скрыть код ответа HTTP 404, можно сделать так:
wfuzz -z file --zD wordlist/general/common.txt --hc 404 http://testphp.vulnweb.com/FUZZ
Двойной фаззинг
Подобно тому, как параметр полезной нагрузки может быть профазен использованием ключевого слова «FUZZ», множественный фаззинг также возможен с указанием ключевых слов:
FUZ2Z — 2-й параметр
FUZ3Z — 3-й параметр
FUZ4Z — 4-й параметр
И каждому параметру может быть выделен свой собственный список слов. Первый "-w" означает первый FUZZ. Второй "-w" соответствует второму FUZ2Z и так далее.
wfuzz -w wordlist/general/common.txt -w wordlist/general/common.txt --hc 404 http://testphp.vulnweb.com/FUZZ/FUZ2Z
Брутфорс логина
HTTP-ответы можно взломать с помощью wfuzz. Например, веб-сайт testphp делает запрос POST к серверной части и передает "uname" и "pass" в качестве аргументов на страницу userinfo.php.
То же самое можно реализовать с помощью wfuzz следующим образом: Аргумент -d указывает данные сообщения, которые будут отправлены вместе с запросом.
wfuzz -z file,wordlist/others/common_pass.txt -d "uname=FUZZ&pass=FUZZ" --hc 302 http://testphp.vulnweb.com/userinfo.php
Как видите, правильные учетные данные "тест-тест" были найдены. Мы использовали общий файл как для имени пользователя, так и для пароля. То же самое можно сделать, предоставив разные файлы для имен пользователей и паролей, например:
-c предназначен для цветового кодирования выходного ответа, который можно пропустить.
wfuzz -z file,users.txt -z file,pass.txt --sc 200 -d "uname=FUZZ&pass=FUZ2Z" http://testphp.vulnweb.com/userinfo.php
Фаззинг файлов cookie
Чтобы отправить пользовательский файл cookie вместе с запросом в разные каталоги, мы можем использовать плагин "-b". Это добавит файл cookie к отправленному HTTP-запросу.
Полезный сценарий:
- Отравление печеньками
- Перехват сеанса
- Повышение привилегий
wfuzz -z file,wordlist/general/common.txt -b cookie=secureadmin -b cookie2=value2 --hc 404 http://testphp.vulnweb.com/FUZZ
В приведенном выше сценарии мы добавили 2 статических файла cookie в несколько каталогов. Теперь мы также можем фаззить параметр cookie следующим образом:
wfuzz -z file,wordlist/general/common.txt -b cookie=FUZZ http://testphp.vulnweb.com/
Фаззинг заголовка
Заголовок HTTP может быть добавлен в запрос, отправляемый wfuzz. Заголовки HTTP могут изменить поведение всей веб-страницы. Пользовательские заголовки могут быть изменены или введены в исходящий запрос.
Полезные сценарии:
- Внедрение заголовков HTTP
- SQL-инъекции
- Внедрение заголовка хоста
wfuzz -z file,wordlist/general/common.txt -H "X-Forwarded-By: 127.0.0.1" -H "User-Agent: Firefox" http://testphp.vulnweb.com/FUZZ
HTTP ОПЦИИ для фазинга
Существуют различные доступные методы HTTP-запроса/параметров, которые можно указать с помощью флага "-X". В следующем примере мы вставили следующие параметры в текстовый файл с именем options.txt.
GET
HEAD
POST
PUT
DELETE
CONNECT
OPTIONS
TRACE
PATCH
wfuzz -c -w options.txt --sc 200 -X FUZZ “http://testphp.vulnweb.com”
Как вы могли видеть, три допустимых варианта вернули код ответа 200.
То же самое можно ввести в строке с помощью полезной нагрузки «list» следующим образом:
wfuzz -z list,GET-HEAD-POST-TRACE-OPTIONS -X FUZZ http://testphp.vulnweb.com/
Фаззинг через прокси
Wfuzz также может направлять запросы через прокси. В следующем примере прокси-сервер Burp активен на порту 8080, и, как вы можете видеть, запрос перехвачен в перехвате burp.
wfuzz -z file,wordlist/general/common.txt -p localhost:8080 http://testphp.vulnweb.com/FUZZ
То же самое может быть достигнуто с помощью прокси-сервера SOCKS следующим образом:
wfuzz -z file,wordlist/general/common.txt -p localhost:9500:SOCKS5 http://testphp.vulnweb.com/FUZZ
Фаззинг аутентификации
Wfuzz также может устанавливать заголовки аутентификации и предоставлять средства аутентификации через HTTP-запросы.
Флаги:
–basic: обеспечивает базовую аутентификацию по имени пользователя и паролю.
–ntlm: проверка подлинности Windows
--digest: согласование с веб-сервером через дайджест-доступ
В следующем примере я предоставляю встроенный список с двумя переменными и –basic input для перебора веб-сайта httpwatch.com.
wfuzz -z list,nonvalid-httpwatch --basic FUZZ:FUZZ https://www.httpwatch.com/httpgallery/authentication/authenticatedimage/default.aspx
Рекурсивный фазинг
-R может указывать уровни рекурсии при фаззинге каталогов или параметров. Проще говоря, рекурсия означает фаззинг на нескольких разных уровнях каталогов, таких как /dir/dir/dir и т. д. В следующем примере мы выполняем рекурсию на уровне 1 со встроенным списком, содержащим 3 каталога: admin, CVS и cgi-bin. Обратите внимание, как каталог "-" в его имени может быть указан как встроенный
wfuzz -z list,"admin-CVS-cgi\-bin" -R1 http://testphp.vulnweb.com/FUZZ
Принтеры и вывод
Принтеры в wfuzz относятся ко всем форматам, в которых может обрабатываться вывод полезной нагрузки. Его можно просмотреть, используя аргумент -e, за которым следует принтер. Кроме того, флаг "-o" также может указывать формат вывода.
wfuzz -e printers
wfuzz -o json -w wordlist/general/common.txt http://testphp.vulnweb.com/FUZZ
Кодировщики
Различные кодировщики доступны в wfuzz. Одним из таких кодировщиков, который мы видели ранее, был md5. Другие кодировщики можно просмотреть, используя флаг "-e" с аргументом кодировщиков.
wfuzz -e encoders
Можно использовать веб-сайт для каталогов, используя вывод MD5 следующим образом:
wfuzz -z file,wordlist/general/common.txt,md5 http://testphp.vulnweb.com/FUZZ
Хранение и восстановление фазинга
Чтобы упростить сканирование, wfuzz может сохранять и восстанавливать сеансы, используя флаг "–dump-recipe" и "–recipe".
wfuzz -w wordlist/general/common.txt --dump-recipe /tmp/recipe --sc 200,301 http://testphp.vulnweb.com/FUZZ
wfuzz --recipe /tmp/recipe
Игнорирование исключений и ошибок
Часто во время фаззинга возникают различные ошибки и исключения, которые может выдавать веб-сайт. Опция "-Z" может заставить wfuzz игнорировать эти ошибки и исключения. Сначала мы запускаем обычную процедуру фаззинга поддоменов, а затем с опцией -Z:
wfuzz -z list,support-web-none http://FUZZ.google.com/
wfuzz -z list,support-web-none -Z http://FUZZ.google.com/
Как вы могли видеть, -Z игнорирует эту ошибку внизу. Кроме того, любой недопустимый ответ также можно скрыть следующим образом:
wfuzz -z list,support-web-none -Z --hc “XXX” http://FUZZ.google.com/
Фильтрация результатов
Существует множество фильтров для управления полезной нагрузкой или выходными данными.
wfuzz --filter-help
wfuzz -z range --zD 0-1 -u http://testphp.vulnweb.com/artists.php?artist=FUZZ --efield r
Ими можно управлять с помощью аргументов "-filter, –slice, –field и –efield".
Например, чтобы просмотреть необработанные ответы на отправленную полезную нагрузку и выполненный полный HTTP-запрос, вы можете использовать опцию "-efield r".
wfuzz -z range --zD 0-1 -u http://testphp.vulnweb.com/artists.php?artist=FUZZ --efield r
Однако, если нужен только предполагаемый URL-адрес, это можно сделать, указав URL-адрес –efield.
wfuzz -z range --zD 0-1 -u http://testphp.vulnweb.com/artists.php?artist=FUZZ --efield url --efield h
Точно так же, чтобы отфильтровать результаты на основе кода ответа и длины страницы (строки больше 97), вы можете сделать это следующим образом:
wfuzz -z range,0-10 --filter "c=200 and l>97" http://testphp.vulnweb.com/listproducts.php?cat=FUZZ
Сессии в wfuzz
Сессия в wfuzz — это временный файл, который можно сохранить, а затем взять, повторно обработать и постобработать. Это полезно в ситуациях, когда один сохраненный результат уже требует изменений или аналитику нужно найти что-то в результатах. Фильтр "–oF" может сохранять выходные данные сеанса в файл.
wfuzz --oF /tmp/session -z range,0-10 http://testphp.vulnweb.com/listproducts.php?cat=FUZZ
Этот файл сеанса теперь можно снова открыть и использовать с помощью полезной нагрузки wfuzzp следующим образом:
wfuzz -z wfuzzp,/tmp/session FUZZ
Один из таких примеров этой фильтрации из ранее сохраненного сеанса: мы находим уязвимость SQL-инъекции, используя регулярное выражение Python, предназначенное для чтения ответов после того, как запрос изменяет параметр, добавляя апостроф (‘) и снова фаззинг. "-A" отображает подробный вывод.
Регулярное выражение r.params.get=+’\’ добавляет апостроф (‘) в параметр get. r означает необработанный ответ.
wfuzz -z range,1-5 --oF /tmp/session http://testphp.vulnweb.com/artists.php?artist=FUZZ
wfuzz -z wfuzzp,/tmp/session --prefilter "r.params.get=+'\''" -A FUZZ
Как видите, запрос номер 4 выдает ошибку SQL, что указывает на SQL-инъекцию. Дополнительные операции с регулярными выражениями см. здесь (https://wfuzz.readthedocs.io/en/latest/library/guide.html).
Заключение
Wfuzz — это универсальный инструмент, который может выполнять больше, чем просто перечисление каталогов, и действительно помогает пентестеру в его анализе. Это быстрый сканер, который прост в использовании и написан на Python для переносимости. Надеюсь, вам понравилась статья. Спасибо за прочтение.
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/a-detailed-guide-on-wfuzz/