О том, как мы используем машинное обучение для выявления подобных атак (в том числе распределенных можно почитать в статье. 'H ' заменит значение этого заголовка, если оно существует, тем, которое указал пользователь или добавит заголовок в конец. Если же мы переходим к перебору паролей в веб-формах, то тут всё по-другому: трудно найти два сайта, на которых был бы одинаковый набор полей формы с одинаковыми именами и одинаковое поведение при успешном или неуспешном входе. Вот результат выполнения брут-форса: 03:28:56 patator info - Starting Patator.7-beta (m/lanjelot/patator) at 03:28 EDT 03:28:56 patator info - 03:28:56 patator info - code size:clen time candidate num mesg 03:28:56 patator info :30:51 patator info. Теперь перейдите в Proxy - Intercept, отключите его. Мы воспользуемся Burp Suite Free Edition. Вы можете задать заголовок без экранирования двоеточий, но в этом случае вы не сможете разместить двоеточия в само значения заголовка, поскольку они будут интерпретироваться в hydra как разделители опций. Dll:destinationhttp3A2F2F target 2Fexchange flags0 username domain 5cuser passwordpass SubmitCredsx trusted0:reason:C/exchweb" Собираем нашу команду: Как всегда, она начинается с бинарного файла THC-Hydra: hydra Опциями -L и -P задаём файлы со списками имён пользователя и паролей: -L opened_names. Использование материалов в противоправных и противозаконных запрещено. Вместо этого я создаю файлик opened_names. Это то место, где больше всего людей ошибаются. Она начинается./ http_fuzz (файл программы и указание используемого модуля). Попробуем использовать эту информацию. Перейдите в dvwa Security и поставьте низкий уровень безопасности ( Low сохраните сделанные изменения: Переходим во вкладку Brute Force. Эта опция означает принять кукиз от веб-приложения и отправить их при следующей проверке логина и пароля. Нам необходимо попробовать авторизоваться с любым паролем и логином, чтобы посмотреть какие запросы проходят через BurpSuite. Эту опцию можно использовать несколько раз каждый раз с разными параметрами и они будут отправлены модулю (пример, -m. c число : Время ожидания в микросекундах верификации доступности сокета (по умолчанию 500 микросекунд). Post Метод post посылает на сервер данные в запросе браузера. Даже с учетом того, что мы взяли небольшой словарь, BurpSuite перебирал словарь около 40 минут. В пункте Payload Positions тип атаки оставляем sniper, но для проверки оставляем только параметр pwd. Для нас это: rhosts IP-адрес жертвы rport порт username логин SSH userpass_file путь до словаря stop_on_success остановка, как только найдется пара логин/пароль threads количество потоков Указание необходимых параметров производится через команду " set ". Отлично, мы увидели post запрос для авторизации с ним мы и будем работать. Для method это get, а для action сама страница с формой (т.е. Это требует перед каждой попыткой получение формы, извлечение этих случайных данных, добавление их в передаваемое с логином и паролем тело запроса; могут быть упрощённые варианты: статичные кукиз и статичные данные в скрытых полях формы. Такие настройки позволят ограничить количество запросов с одного IP-адреса до 40 в секунду. Эта форма служит для доступа в dvwa, страницы которой содержат уязвимые веб-приложения, в том числе те, которые предназначены для входа, но от которых мы не знаем пароли. Анализом статичного кода это выяснить иногда очень непросто. В нашем случае обязательным являются только куки: -m custom-header Cookie: securitylow; phpsessid1n3b0ma83kl75996udoiufuvc2" Итак, собираем всё вместе в одну команду: /usr/local/bin/medusa -h localhost -U opened_names. Сбор имён пользователей Некоторые веб-приложения содержат имена пользователей (логин) на страницах их профилей, иногда в качестве части адреса страницы профиля, иногда необходимо использовать дополнительные программы для выявления логинов (например, для WordPress это может делать WPScan ). Это важно знать, поскольку даже при верном логине и пароле форма выдаст ошибку входа, если отсутствуют другие требуемые данные. Перед каждой попыткой требуется получить веб-страницу с формой, при этом сохранить полученные кукиз для отправки их вместе с кандидатами в логины и пароли; при каждом обновлении страницы форма может содержать скрытые поля со случайными данными. Да и, пожалуй, рассмотрим ещё брут-форс входа на нескольких актуальных версиях реальных веб-приложений. Также вместе или даже вместо показа какого-либо сообщения веб-приложение может: осуществлять редирект (например, в случае удачного входа пользователь перенаправляется в админку или на свою страницу записывать кукиз (в случае верного логина и пароля сервер отправляет кукиз с данными сессии. И ещё обратите внимание, что одну и ту же учётную запись мы взломали четыре раза. Удобство использования метода get заключается в том, что адрес со всеми параметрами можно использовать неоднократно, сохранив его, например, в закладки браузера, а также менять значения параметров прямо в адресной строке. Начнём, естественно, с анализа, введём произвольные данные в форму и нажмём отправить : Как видим, вход не произошёл, из важного: мы остались на странице http localhost/mutillidae/p,.е. Я буду работать с этими уязвимыми веб-приложениями, предустановленными. Имена пользователей и пароли будут подставлены вместо заполнителей "user" и "pass" (параметры формы). В body указано какой логин и пароль проверялись, а значит, мы можем попробовать самостоятельно подставить нужные нам значения. (hH)My-Hdr: foo для отправки с каждым запросом заданного пользователем http заголовка user и pass также могут быть размещены в этих заголовках! Значение пользовательского агента (User-agent). Мы ещё даже не начали знакомиться с программами для перебора, а матчасть получилась значительной.