Статья
Как я месяц переворачивал календарь или walkthrough 3 сентября
ВНИМАНИЕ СПОЙЛЕРЫ!
Всем привет! Данный гайд ориентирован в первую очередь на новичков и сделан не для того чтобы скопировать и забрать флаг, а именно разобраться каким образом можно подходить к решению лабораторий.
Сегодня предлагаю вам окунуться в нестандартную машину, в решении которой использовался достаточно нетривиальный набор инструментов, а если перефразировать назовём это "нетипичным брутфорсом".
И так поехали, для решения данного стенда нам понадобится:
1. Глаза и руки - первым делом как мы запустили стенд наша задача ручками "потыкать" всё, что доступно, т.е. просмотреть все видимые ссылки, просмотреть код страниц. Если мы находим какую-то зацепку - записываем её в заметки, не ленитесь прописывать себе каждую решаемую машину, в дальнейшем это вам пригодиться.
2. username - anarchy - составление списка логинов для дальнейшего брутфорса
3. CUPP - а именно его интерактивный режим, который позволит на создать собственный список паролей для нашего брутфорса
4. ffuf - да, вы не ослышались) в данном стенде в качестве "отмычки" мы будем использовать фазер, а каким образом читай далее.
Вот ты собрался духом и перед тобой открывается главная страница стенда

И первым же делом мы можем увидеть 2 подсказки - "лучший день, чтобы сменить пароль" может натолкнуть на разные мысли, но речь здесь пойдёт конкретно про слабую парольную политику! Вторая же подсказка, поможет нам в построении последующего вектора прохождения машины, перейдя по ссылке "О проекте" мы увидим, что там есть информация о нашем великом Мэтре.

И тут же можно увидеть третью подсказку "Говорят, хорошие пароли часто связанны с самим пользователем... но это плохая привычка" - вот оно - слабая парольная политика! Но мы не знаем парольную политику.
Если вы посмотрев на информацию выше не понимаете что же из этой информации можно вытянуть, рекомендую вам пройти модуль Аутентификация: уязвимости и атаки
Вернёмся назад.
Теперь нас интересует парольная политика и пройдя на страницу "Зарегистрироваться", мы можем "пробить" парольную политику и увидеть подсказку о предполагаемом шаблоне логина пользователя, а так же подсказку на попытки узнать политику паролей

- Попробовав зарегистрировать пользователя узнаём, что политика следующая:
- минимум 8 символов
- хотя бы 1 заглавная буква (A–Z)
- хотя бы 1 цифру (0–9)
- хотя бы 1 спецсимвол (например, !, @, #, _ или .)
Эти данные нам помогут в дальнейшем правильно отфильтровать полученный с помощью CUPP вордлист.
Вернёмся к странице "О проекте", где у нас есть информация о возможно зарегистрированном пользователе на этом ресурсе.
Применим username-anarchy для составления списка логинов для брутфорса следующей командой:./username-anarchy Mikhail Shufutinsky > ~/Desktop/3_september/Misha_login.txt
Что здесь что:
- Mikhail Shufutinsky - обязательный формат для данной тулзы firstname surmane
- > ~/Desktop/3_september/Misha_login.txt - вывод в нужный нам файл
Следующим шагом будет применение второго инструмент - СUPP, он доступен для установки в kali linux следующей командой.
sudo apt-get -y install cupp
Данный инструмент позволит нам сгенерировать собственный список паролей для дальнейшего брутфорса.
Запуск интерактивного режима: cupp -i
А дальше отвечаем на вопросы cupp согласно имеющейся информации выше


Так же там может быть предложение о выводе в терминал формируемых "слов" можете согласиться или ответить N
На данный момент мы собрали всю необходимую информацию для того чтобы перейти к главному действию, взлому формы входа, но для этого первым делом отфильтруем список паролей уже по известным нам параметрам c помощью grep
grep -E '^.{8,}$'misha.txt \ grep -E '[A-Z]' \ grep -E '[a-z]' \ grep -E '[0-9]' \ grep -E '([!@#$%^&*].*){1,}' \ > misha-filtered.txt
Казалось бы можно запускать hydra и флаг в кармане, но увы...
Почему же не hydra?
А всё потому что она в данном случае даёт ложно положительные срабатывания

И вот здесь мы приступаем к заключительной части нашего балета)
Применим FFUF:
Как завещали праотцы первым делом сфазим логинffuf -w Misha_login.txt:FUZZ \ -u http://10.8.0.1:31274/login/ \ -X POST \ -d 'username=FUZZ&password=1234' \ -H 'Content-Type: application/x-www-form-urlencoded'
Разъяснять команды не буду, думаю вы их и так знаете, а если нет, добро пожаловать в увлекательный мир FFUF
Прогнав по списку наш небольшой словарь, увидим:

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

И делаем мы это следующим образом :fuf -w misha_filtered.txt:FUZZ \-u http://10.8.0.1:32270/login/ \-X POST \-d 'username=mikhail.shufutinsky&password=FUZZ' \-H 'Content-Type: application/x-www-form-urlencoded' \-fs ***
Фильтруем ответ сервера и БИНГО! получаем заветный пассворд

Проверяем и забираем флаг!
Подведём итоги
На данном стенде используется нетривиальная попытка "тупого" брутфорса, а конкретный пайплайн, который мы с вами можем составить из информации приведенной выше
- сбор информации > составление вордлистов логин/пароль > выбивание парольной политики > внимательный фазинг с фильтрацией выводов.
Напомню, не ищите флаги ради флагов, кайфуйте с процесса, думайте, если понимаете, что вариантов больше нет, отвлекитесь и возможно инсайт догонит вас сам. За сим я откланиваюсь, всем хак!