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

Что такое перечисление имен пользователей?

При перечислении имени пользователя хакер пытается перечислить действительное имя пользователя в приложении. На основе подробной ошибки хакер может различать действительные и недопустимые имена пользователей.

Пример: в приложении ниже я указал неправильное имя пользователя.

В ответ он получил сообщение об ошибке, в котором указано Недействительное имя пользователя.

Следовательно, отсюда ясно, что мы действительно можем различать действительные и недопустимые имена пользователей.

Как получить информацию о перечислении имен пользователей?

Есть несколько способов, но, как правило, злоумышленник или тестер использует методы грубой силы. Для атаки методом грубой силы нам нужен список общих имен пользователей, чтобы определить имя пользователя, и автоматизированный инструмент, который действительно может автоматизировать процессы тестирования. У нас есть пара инструментов для этого, например, hydra, John the ripper Intruder в Burp Suite. Здесь я использую вкладку Intruder в пакете отрыжки, чтобы подобрать имя пользователя.

Примечание. Если после нескольких попыток в приложении нет блокировки учетной записи, мы можем легко провести эту атаку.

Чтобы продолжить, сначала мы должны перехватить запрос на вход и отправить его злоумышленнику. На вкладке «Злоумышленник» у нас есть четыре дополнительных вкладки.

я. Цель: URL-адрес приложения, в котором будет проведена атака.

II. Позиция: по какому параметру мы хотим провести атаку. Здесь я выбрал значение поля имени пользователя и поля пароля.

iii. Полезные данные: здесь мы указываем, как мы хотим выполнять обработку и какие данные мы собираемся использовать для этого. В каком порядке будут обрабатываться полезные данные.

iv. Параметры: если мы хотим изменить стандартные правила набора отрыжки или мы хотим выполнить любое сопоставление и grep в злоумышленнике.

На скриншоте выше мы ясно видим, что на вкладке «Позиции» указан тип атаки. В типе атаки есть несколько вариантов, таких как Снайпер, Таран, Вилы и Кластерная бомба.

Если у нас есть один набор полезных нагрузок, то атака «Снайпер» или «Таран» будет работать, а если у нас есть, несколько наборов полезной нагрузки (два набора полезной нагрузки), тогда атака «вилками» или «кассетной бомбой» будет работать.

· Снайпер:

Он помещает каждую полезную нагрузку в выбранную позицию по очереди по одной позиции за раз, т.е. если мы выбрали несколько позиций в запросе и у нас есть тип снайперской атаки, тогда он собирается поместить полезную нагрузку в первую позицию, а затем после ее тестирования поместите полезную нагрузку во вторую позицию. то есть, если у нас есть 5 полезных нагрузок, злоумышленник сделает 10 запросов по 5 для каждого места.

Общее количество запросов фаззинга равно длине списка, если у нас одновременно выбирается только одна позиция.

После выполнения фаззинга в поле имени пользователя. У меня действующее имя пользователя.

Использование:

Разбить номер запроса по отдельному полю.

· Таран:

Он размещает одну и ту же полезную нагрузку сразу во всех выбранных позициях. Итак, если мы выбрали три позиции, он помещает полезную нагрузку во все три выбранные позиции одновременно.

Поскольку полезная нагрузка размещается на позициях одновременно, общее количество запросов на атаку равно записи в списке.

После его выполнения поле имени пользователя. Я получил имя пользователя.

Использование:

Это полезно, когда нам нужно вставить один и тот же ввод в 2 или 3 позиции за раз.

· Вилы:

Когда у нас есть несколько позиций, таких как имя пользователя и пароль, мы можем использовать этот тип атаки.

После выбора этой опции у нас будет два набора доступных вариантов полезной нагрузки.

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

Обработка обоих списков начинается одновременно. В первом запросе он помещает 1-ю полезную нагрузку в первую позицию, 2-ю полезную нагрузку во вторую позицию, и то же самое происходит с последовательным запросом.

Общее количество запросов равно размеру наименьшего списка. Как и в нашем случае, у нас есть оба списка равного размера - 100.

Использование:

Это полезно в тех атаках, где нам нужно подобрать как имя пользователя, так и пароль.

· Кассетная бомба:

Если у нас есть две позиции, он использует первый набор полезных данных и проверяет его на соответствие всем первым записям набора полезных данных 2.

Так как у нас две позиции, логин и пароль. В позиции имени пользователя он помещает список имен пользователей полезной нагрузки в имя пользователя, берет первую запись из списка паролей и проверяет ее для всех имен пользователей.

После тестирования всего имени пользователя с первой записью полезной нагрузки2 он переходит ко второй записи и проверяет ее на все имена пользователей.

Использование:

Это полезно для тех мест, где входы разные и не связаны друг с другом.

Исправление

· Показывать простое сообщение об ошибке, указывающее, что имя пользователя или пароль неверны, чтобы подробные ошибки не позволяли хакеру угадать имена пользователей или пароли.

· Примените ограничение скорости на панели входа в систему и заблокируйте вход после 3–4 неправильных попыток или после нескольких неверных запросов.

· Добавить капчу