Представляю вашему вниманию очередную часть перевода OWASP Testing Guide. В данной статье речь пойдет о механизме блокировки учетных записей.

Предыдущие статьи
  1. Тестирование: введение и задачи
  2. Сбор информации с помощью поисковых систем
  3. Определение веб-сервера
  4. Поиск информации в метафайлах веб-сервера
  5. Определение веб-приложений на сервере
  6. Поиск утечек информации в комментариях и метаданных
  7. Определение точек входа веб-приложения
  8. Составление карты веб-приложения
  9. Определение фреймворка веб-приложения
  10. Определение веб-приложения
  11. Составление карты архитектуры веб-приложения
  12. Тестирование конфигурации инфраструктуры веб-приложения
  13. Изучение расширений файлов
  14. Поиск страрых версий веб-приложения, скрытых файлов и резервных копий
  15. Поиск административных интерфейсов
  16. Тестирование HTTP методов
  17. Тестирование HSTS
  18. Тестирование кросс-доменной политики
  19. Изучение ролей пользователей
  20. Тестирование процесса регистрации
  21. Предоставление учетных записей
  22. Определение имен пользователей
  23. Определение правил генерации имен пользователей
  24. Изучение передачи пользовательских данных
  25. Тестирование учетных данных по умолчанию


Резюме

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

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

Без правильно реализованого механизма блокировки учетных записей веб-приложение может быть подвержено подбору паролей. Подобрав пароль атакующий может получить доступ к:

  • Конфиденциальной информации: документы, данные пользователя, финансовая и банковская информация, и т.д.
  • Административному интерфейсу, позволяющему изменять веб-приложение, добавлять или удалять пользователей, управлять правами пользователей и прочее.
  • Возможности проведения атаки — закрытый раздел веб-приложения может содержать уязвимости или более продвинутый функционал, недоступный неавторизованным пользователям.

Задачи тестирования

  1. Оценить противодействие мезанизма блокировки учетных записей подбору паролей.
  2. Оценить возможность неавторизованной разблокировки учетной записи.

Как тестировать

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

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

  1. Попробуйте авторизоваться с неправильным паролем 3 раза
  2. Успешная авторизация сведетельствует о том, что учетная запись не блокируется после 3 неудачных попыток авторизации
  3. Попробуйте авторизоваться с неправильным паролем 4 раза
  4. Успешная авторизация сведетельствует о том, что учетная запись не блокируется после 4 неудачных попыток авторизации
  5. Попробуйте авторизоваться с неправильным паролем 5 раз
  6. При авторизации с правильным паролем получаем сообщение «Ваша учетная запись была заблокирована». Это значит что учетные записи блокируются после 5 неудачных попыток авторизации

  7. Попробуйте авторизоваться с правильным паролем спустя 5 минут, снова получаем сообщение о блокировке учетной записи — это значит, что учетная запись не разблокируется автоматически через 5 минут

  8. Попробуйте авторизоваться с правильным паролем через 10 минут, снова получаем сообщение о блокировке учетной записи — это значит, что учетная запись не разблокируется автоматически через 15 минут

  9. Успешно авторизовались через 15, значит учетная запись автоматически разблокируется в течении 16-30 минут

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

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

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

  1. Каков риск подбора паролей?
  2. Достаточна ли CAPTCHA для снижения этого риска?
  3. Используется ли блокировка на стороне клиента (например, JavaScript)? (Если да, то отключите выполнение JavaScript на время тестов)
  4. Количество неудачных попыток авторизации для блокировки. Если порог блокировки слишком низок, то пользователи будут блокироваться слишком часто. Слишком высокий порог блокировки позволяет атакующему провести подбор паролей. В зависимости отцели веб-приложения блокировка должна происходить после 5-10 неудачных попыток авторизации.

  5. Как просиходит разблокировка?
    1. Вручную администратором — наиболее безопасный способ, но он может быть неудобен для пользователей и отнимает «ценное» время у администраторов.
      1. Обратите внимание, что разблокировка должна быть предусмотрена и для администраторов
      2. Подобная разблокировка может привести к отказу в обслуживании, если атакующий поставит перед собой цель — заблокировать всех пользователей веб-приложения
    2. Автоматическая разблокировка через определенный промежуток времени. Как долго длится блокировка? Этого достаточно для защиты веб-приложения? Блокировка в течении 5-30 минут является хорошим компромисом между безопасностью и удобством пользователей.

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

Рекомендации

Изучите статью о подборе паролей

Противодействие

Меры противодействия размещены от наименее до наиболее надежных:

  1. Временная блокировка с последующей автоматической разблокировкой
  2. Самостоятельная разблокировка (отправляется ссылка на электронную почту, указанную при регистрации)
  3. Ручная разблокировка администратором
  4. Ручная разблокировка администраторов после успешного подтверждения личности пользователя