Аутентификация
Концептуально уязвимости аутентификации понять несложно. Однако обычно они критичны из‑за прямого влияния на безопасность.
Уязвимости аутентификации могут позволить злоумышленникам получить доступ к конфиденциальным данным и функциональности. Они также расширяют доступную площадь атаки. Поэтому важно научиться выявлять и эксплуатировать уязвимости аутентификации, и понять как обходятся распространённые меры защиты.
В этом разделе мы рассмотрим:
Наиболее распространённые механизмы аутентификации, используемые веб‑сайтами.
Потенциальные уязвимости этих механизмов.
Типичные уязвимости, возникающие из‑за неправильной реализации.
Как сделать собственные механизмы аутентификации максимально устойчивыми.
Лабораторные задания
Если вы знакомы с базовыми концепциями уязвимостей аутентификации и хотите попрактиковаться в их эксплуатации на реалистичных, намеренно уязвимых целях, вы можете перейти к лабораторным работам по ссылке ниже.
Что такое аутентификация?
Аутентификация — это процесс проверки личности пользователя или клиента. Веб‑сайты потенциально доступны любому, кто подключён к интернету. Поэтому, надежные механизмы аутентификации — неотъемлемая часть веб‑безопасности.
Существует три основных типа аутентификации:
Фактор знания — что‑то, что вы знаете, например пароль или ответ на контрольный вопрос.
Фактор владения — что‑то, чем вы обладаете. Это физический объект, такой как мобильный телефон или токен безопасности.
Фактор свойства — что‑то, чем вы являетесь или что вы делаете. Например, ваши биометрические данные или поведенческие шаблоны.
Механизмы аутентификации полагаются на набор технологий для проверки одного или нескольких из этих факторов.
В чём разница между аутентификацией и авторизацией?
Аутентификация — это процесс проверки того, что пользователь действительно тот, за кого себя выдаёт. Авторизация — это проверка того, разрешено ли пользователю что‑то делать. Например, аутентификация определяет, действительно ли тот, кто пытается получить доступ к сайту под именем пользователя Carlos123, является тем самым человеком, который создал эту учётную запись.
После того как Carlos123 прошёл аутентификацию, его права определяют, что ему авторизовано делать. Например, ему может быть разрешён доступ к персональной информации о других пользователях или выполнение действий, таких как удаление учётной записи другого пользователя.
Как возникают уязвимости аутентификации?
Большинство уязвимостей в механизмах аутентификации возникает одним из двух способов:
Механизмы аутентификации слабы, потому что они не обеспечивают достаточную защиту от атак перебора.
Логические ошибки или плохой код в реализации позволяют злоумышленнику полностью обойти механизмы аутентификации.
Во многих областях веб‑разработки логические ошибки приводят к непредвиденному поведению сайта, что может быть, а может и не быть проблемой безопасности. Однако, поскольку аутентификация критически важна для безопасности, весьма вероятно, что дефектная логика аутентификации подвергает сайт рискам.
Какие последствия уязвимостей аутентификации?
Последствия уязвимостей аутентификации могут быть серьёзными. Если атакующий обойдёт аутентификацию или подберёт пароль и войдёт в учётную запись другого пользователя, он получит доступ ко всем данным и функциям, доступным скомпрометированной учётной записи. Если ему удастся скомпрометировать учётную запись c высокими привилегиями, такую как системный администратор, он может полностью взять под контроль всё приложение и потенциально получить доступ к внутренней инфраструктуре.
Даже компрометация учётной записи с низкими привилегиями может предоставить атакующему доступ к данным, к которым у него иначе не было бы доступа, например к информации, чувствительной для бизнеса. Даже если у учётной записи нет доступа к конфиденциальным данным, она всё равно может позволить атакующему попасть на дополнительные страницы, что расширяет площадь атаки. Часто атаки высокой серьёзности невозможны с публично доступных страниц, но могут быть осуществимы с внутренней страницы.
Уязвимости в механизмах аутентификации
Система аутентификации веб‑сайта обычно состоит из нескольких отдельных механизмов, в которых могут проявляться уязвимости. Некоторые уязвимости применимы ко всем контекстам, другие более специфичны для предоставляемого функционала.
Рассмотрим более подробно некоторые из наиболее распространённых уязвимостей в следующих областях:
Уязвимости многофакторной аутентификации
Несколько лабораторных заданий требуют перечисления имён пользователей и брутфорса паролей. Чтобы помочь вам в этом процессе, на следующих страницах собраны списки usernames и passwords, которые следует использовать для решения лабораторных задач.
Уязвимости в механизмах аутентификации третьих сторон
Если вам нравится взламывать механизмы аутентификации и вы прошли основные лабораторные задания по аутентификации, можете также попробовать лабораторные работы по аутентификации OAuth.
Предотвращение уязвимостей в ваших механизмах аутентификации
Мы рассмотрели несколько примеров уязвимостей механизмов аутентификации веб-сайтов. Чтобы снизить риск атак на ваши веб-сайты, следует соблюдать несколько принципов, описанных на следующей странице.
Last updated