• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Статья [Authentication Vulnerability] Перебор имён пользователей

Привет, это сегодня расскажу как можно пройти лабораторию "Username enumeration via response timing" от .
План статьи:
1) Введение - теория, узнаем как перебирать имена пользователя если мы не нашли разницу в длине ответа и в кодах ответа. Узнаем что такое X-Forwarded-For и как его использовать
2) Работа в Intruder - практика, начинаем брутфорсить.



Введение
Зайдём на главную страницу сайта и введём туда данные которые как мы знаем точно не существуют, и давайте отправим запрос в Repeater
Предположим что мы посмотрели длину и коды ответов, и ничего не нашли.


- Теперь давайте найдём разницу между неверным именем пользователя и верным.
1703677877920.png

1703677985034.png

Неверный username занял у нас - 77 мс
Верный username занял - 108 мс
- Давайте ещё раз нажмём вдруг поменяется что то.
1703678164966.png

Видим, что нас вообще заблокировало, видимо он блокирует мой IP-адрес.
Давайте проверим, может тут слабый механизм блокировки. Нужно выяснить принимает ли он заголовок X-Forwarded-For
! X-Forwarded-For может использоваться для смены IP. Если в приложение встроена обработка данного хедера, просто отправьте X-Forwarded-For: desired_IP для подмены IP, чтобы обойти ограничение без использования дополнительных прокси
1703678350840.png

Отлично! всё сработало, но мы видим что нет большой разницы между неверным и верным username.

Следующее, что я собираюсь сделать, это увеличить длину пароля, потому что некоторые приложения проверяют первым на валидность имя пользователя, а если не действителен, то они не будут проверять пароль. Но если он действителен, то он будет проверять пароль и может возникнуть разница во времени
Давайте так и сделаем.
1703678596236.png

У нас получилось аж 597 мс! И кажется что серверная часть при увеличении длины пароля выполняет больше вычислений и поэтому требуется больше времени.

- Теперь давайте сделаем тоже самое для несуществующего пользователя. Не забываем менять наш заголовок!!!! А то заблокирует и плохо будет
1703678747781.png

Теперь указано 79 мс, почему так спросите? Потому что когда имя недействительно, то он дальше не идёт ничего проверять и отбрасывает нам invalid username or password.



Работа в Intruder
После того как мы разобрались во времени ответов, давайте похакаем!
Отправляем запрос в Intruder, включим тип атаки pitchfork для того что бы:
1) Менять наш X-Forwarded-For
2) Менять username

При этой атаке для каждой определенной позиции используется свой набор полезной нагрузки. Полезная нагрузка помещается в каждую позицию одновременно.
1703679254004.png


- В Payloads, ставим 1 payload в numbers, а во второй payload добавляем список пользователей
1703679122246.png


- Включаем показ времени ответа
1703679193944.png


Отлично, теперь сортируем по времени. И ищем самое большое число, теперь видим что наш username это alaska, теперь давайте для него подбирать пароль.
1703679301817.png


Меняем username на alaska, и ставим пароль в знаки амперсанда, и НЕ ЗАБЫВАЕМ менять X-Forwarded-For
1703679505488.png

Теперь мы полностью решили задачу, пароль известен, имя пользователя тоже!
Можете войти и проверить, но не забудь про X-Forwarded-For
 

Вложения

  • 1703678980942.png
    1703678980942.png
    19,5 КБ · Просмотры: 36
  • 1703679060108.png
    1703679060108.png
    7,7 КБ · Просмотры: 35
Последнее редактирование:

Paladin

Red Team
10.10.2021
96
439
BIT
431
Хорошая статья. Подредактируйте немного в плане оформления и устранения грамматических ошибок. Предложения не все начинаются с заглавной буквы, интервалы между текстом и скринами, а также распределения текста по ширине страницы сильно улучшили бы читабельность и внешний вид.
 

apache2

Green Team
26.02.2021
32
16
BIT
204
Хорошая статья. Подредактируйте немного в плане оформления и устранения грамматических ошибок. Предложения не все начинаются с заглавной буквы, интервалы между текстом и скринами, а также распределения текста по ширине страницы сильно улучшили бы читабельность и внешний вид.
Спасибо. Поправил, красные волнистые линии исправил :)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!