Когда речь идёт о безопасности, процесс сброса пароля — одно из тех мест, где разработчики не могут позволить себе ошибаться. Одна единственная уязвимость может открыть дверь к критическим багам.
Недавно, тестируя приложение Redacted.com, я обнаружил уязвимость перечисления пользователей. Честно говоря, многие программы помечают подобные проблемы как информационные или не входящие в область тестирования. Но иногда то, что кажется «бесполезным», может скрывать серьёзные последствия.
Это история о том, как я начав с «бесполезного» бага пришёл к обнаружению 0-click ATO (account takeover).
Шаг 1 — страница сброса пароля

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

Введя адрес тестовый электронной почты, я как обычно получил ссылку для сброса пароля.

Но когда я попробовал ввести случайный адрес электронной почты вроде testhehhhehe@gmail.com, приложение ответило:
«Мы не можем найти аккаунт с таким адресом электронной почты.»
Это классическая уязвимость перечисления пользователей.
В такой ситуации один из моих друзей однажды сказал:
«Я не тот парень, который репортит о бесполезной х**не»
И, честно говоря, я думал так же. Перечисление пользователей обычно не стоит того, чтобы о нём сообщать. Но моё любопытство не дало мне остановиться на этом.
Шаг 2 — Детальное изучение ссылки для сброса пароля
Когда я проверил свою почту, ссылка выглядела так...


https://redacted.com/reset-password?email=shiohz0test@gmail.com&token=O4AiLBPhZNvr
Она содержала два параметра:
- адрес моей электронной почты
- токен для сброса
Открыв ее, я попал на привычную страницу «Создать новый пароль». Пока ничего необычного.
Шаг 3 — Небольшой эксперимент
Я решил попробовать простой трюк...
Я запросил ещё одну ссылку для сброса на тот же адрес электронной почты (shiohz0test@gmail.com). Когда я получил свежую ссылку с новым токеном, я изменил адрес электронной почты в URL и открыл её. Вместо моего исходного адреса я подставил другой тестовый аккаунт, которым владел:
https://redacted.com/reset-password?email=testshiozhy@gmail.com&token=sYrUIKzYt46
Вуаля!

Страница без проблем загрузилась и позволила мне сбросить пароль для testshiozhy@gmail.com, хотя я никогда не запрашивал сброс для этого аккаунта.
В приложении была серьёзная ошибка. Оно напрямую доверяло параметру email из URL и не проверяло, действительно ли токен сброса принадлежит этому адресу. Это несоответствие позволило мне сбросить пароль другого пользователя без его участия.
Таким образом, имея всего один токен (который я получил для своего аккаунта), я мог захватить любой аккаунт, просто заменив email в ссылке.
Жертве даже не нужно было ничего нажимать. Никакой социальной инженерии. Никакой сложной цепочки эксплойтов. Просто 0-click account takeover.
Токен для сброса пароля должен был истечь примерно через 10 минут и мог использоваться только один раз, что обычно является надёжной мерой безопасности. Но поскольку токен не был корректно привязан к конкретному адресу электронной почты, эта защита была обойдена и всё равно привела к захвату аккаунта.
Обычно вероятность таких багов невелика, но когда они встречаются, последствия могут быть огромными. Именно поэтому важно тестировать даже самые мелкие детали.
То, что сначала казалось бесполезной ошибкой, превратилось в одну из самых серьёзных уязвимостей — полный захват аккаунта. Так что в следующий раз, когда наткнётесь на что-то незначительное, не игнорируйте это. Поиграйте с этим, и кто знает — возможно, вы наткнётесь на уязвимость, меняющую правила игры. Любопытство всегда окупается.
Еще больше познавательного контента в Telegram-канале — Life-Hack - Хакер
Комментарии (4)
apcs660
27.08.2025 18:51дыра размером с ворота... не так давно знакомый похожую дыру нашел в документ репозитории OpenText / Vignette (старье никому не нужное, но все же еще где то есть) - после ауфентикации обычным пользователем, можно айди админа ставить и делать все что хочешь - аналогичное "джентельменам верят на слово". Изменить только клиента нужно, всех дел.
kompilainenn2
27.08.2025 18:51OpenText
Будь проклято это говно, которое кто-то к нам затащил в холдинг
rudefovski
27.08.2025 18:51На самом деле, подобная уязвимость довольно часто встречается в проектах, особенно во внутренних, где почему-то к безопасности не такое пристальное внимание
bogolt
Уязвимость печальная, или токен не привязан к почте или привязан но это забыли проверить в коде.