Кибербезопасность
November 14, 2024

PortSwigger Web Academy             Lab: Username enumeration via different responses

Вводная часть

В данной лабораторной работе, исходя из постановки задачи, необходимо будет перебрать списки возможных пользователей и паролей (атака методом Brute Force). Ссылка на лабораторную работу: https://portswigger.net/web-security/authentication/password-based/lab-username-enumeration-via-different-responses

Выбор инструментов и настройка

В любой задаче правильный туллинг и инструментация - уже 20% результата, а где-то даже больше. Будем использовать Burp Suite community edition (поставляется в наборе инструментов дистрибутива Kali Linux). Burp Suite работает в режиме proxy для анализа и изменения отправляемых запросов и получения ответов. Для быстрого переключения proxy в браузере при работе с Burp Suite советую использовать расширение FoxyProxy: https://addons.mozilla.org/ru/firefox/addon/foxyproxy-standard/.

Прохождение

В описании к данной работе нам предоставляются списки потенциальных логинов и паролей. Но для начала попробуем вручную протестировать форму авторизации (чтобы понять механизм авторизации и захватить несколько запросов для последующей работы с Burp Suite).

Форма авторизации

Неудачная попытка входа

Заметим, как реагирует форма авторизации на попытку входа с неправильными учетными данными. Теперь рассмотрим как выглядит данный запрос в Burp Suite (Предварительно включив его перед работой и настроив proxy).

Запрос в Burp Suite
Ответ в Burp Suite

Для перебора логинов и паролей воспользуемся Intruder-ом. С помощью него можно будет формировать запросы с устанавливаемыми из подготовленных списков полями. В описании к работе нам предлагается по 100 возможных паролей и логинов для входа. Для полного перебора сразу логинов и паролей понадобится 100000 запросов, что Burp Suite в community версии в однопоточном режиме будет делать ощутимо долго. Поэтому для начала попробуем подобрать правильный логин, а потом уже пароль (максимум понадобится 200 запросов).

Отправим наш тестовый неудачный запрос на авторизацию в Intruder. Выберем тип атаки Sniper (будет доступен один набор payload-ов). Добавим метки вокруг поля с предполагаемым логином.

Подготовка в Intruder
Payload-ы
Отличающийся по длине ответ (потенциально наш клиент)

В названии работы была подсказка, поэтому и стоит обратить внимание на отличающуюся длину ответа (да и в любом случае стоило бы обратить внимание).

Предположение было верным (вместо сообщения Invalid user получили сообщение Incorrect password)

Теперь, когда у нас есть логин пользователя мы сможем подобрать его пароль. Теперь в intruder мы зафиксируем имя пользователя <ar>. А пароль будем перебирать из предложенного в работе списка.

302 redirect (возможно мы смогли подобрать верный пароль)

Теперь попробуем авторизоваться с учетными данными ar:thunder.

Удачный вход с подобранными учетными данными

Вывод

Из-за изменения вывода информационного сообщения при попытке входа с правильным логином, но неправильным паролем мы смогли подобрать пароль за 200 запросов. Даже если бы сообщение не изменялось мы бы смогли подобрать данные за 10000 запросов, т.к. форма авторизации не защищена от Brute-force атак.