Введение

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

Как работает функция сброса пароля?

Теперь, когда мы знакомы с важностью функции «Забыть пароль» и с тем, почему она изображена на картинке. Давайте поговорим о том, как это работает на самом деле.

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

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

Какие основные методы сброса пароля используются?

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

PIN:

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

Пользователь может выбрать PIN-код, а затем использовать его для добавления дополнительного уровня безопасности при сбросе пароля.

  1. ПИН должен быть проверен на стороне сервера.
  2. Заблокируйте пользователя, если он несколько раз введет неправильный пин-код.

Контрольные вопросы и ответ:

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

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

Токены URL:

Некоторые приложения используют функцию токена для сброса пароля приложения. URL-адрес, содержащий ссылку, выглядит следующим образом

https: // ‹Название приложения› / PasswordLink? token = ‹Любой действующий токен›

Этот URL-адрес имеет действующий токен, и эта ссылка предоставляется пользователю приложением в его зарегистрированном электронном письме. Таким образом, как только пользователь нажимает на URL-адрес, он проверяется, если срок действия токена истек, тогда пользователь должен запросить их снова. Для этого метода не требуется старый пароль, но каждый раз, когда эта функция реализуется, энтропия токена должна быть высокой и непредсказуемой. Если это предсказуемо, то злоумышленник может это угадать, и есть вероятность перехвата аккаунта.

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

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

У злоумышленника есть несколько способов манипулировать паролем.

Атака заголовка хоста:

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

https://gupta-bless.medium.com/exploiting-host-header-injection-5554fef7e25

Многие приложения используют заголовок хоста для генерации токена сброса пароля. Приложение добавляет токен к URL-адресу приложения, например http: // ‹Host-Header› / token. Теперь, если злоумышленник может манипулировать доменом в заголовке хоста и ввести имя пользователя законного пользователя, токен по-прежнему будет генерироваться и будет отправлен законному пользователю, но, поскольку доменом манипулируют, пользователь получит управляемый токен сброса пароля, если пользователь нажимает на токен, он будет перенаправлен в домен, контролируемый злоумышленником, который был введен в заголовок хоста, и злоумышленник может легко украсть токен сброса пароля и использовать его для сброса пароля пользователя.

Проблемы при создании токена:

Нам известно о функциональности токенов паролей, но может быть несколько требований, если они не будут реализованы, тогда токен может быть скомпрометирован, а именно:

  1. Ограничьте продолжительность использования токена: если у токена нет срока действия, этот токен можно использовать в течение длительного времени, поэтому, если пользователь запросил его и не использовался, злоумышленник каким-то образом получит доступ к электронной почте он все еще может использовать.
  2. Повторное использование токена. Каждый раз, когда пользователь запрашивает токен для сброса своего пароля, он должен быть уникальным, и срок его действия должен истечь, как только он будет использован.
  3. Предполагаемые токены: когда сгенерированный токен имеет очень низкую энтропию или использует некоторые хорошо известные вещи, такие как кодирование идентификатора электронной почты пользователя в base64 и отправка его в качестве токена сброса пароля, злоумышленник может легко угадать его можно использовать для захвата аккаунта.

Заключение

Мы поняли важность функции «Забытый пароль» и способы, которыми злоумышленник может манипулировать этой функцией, чтобы получить действительный токен, а затем захватить учетную запись пользователя. Как только он получит действующий токен, он сможет легко изменить пароль и выполнить захват учетной записи. Поэтому всякий раз, когда владелец приложения реализует функцию забытого пароля, он всегда должен помнить базовую реализацию безопасности, в противном случае можно злоупотребить функцией забытого пароля, и ее можно использовать для кражи конфиденциальной информации пользователя.