Всем Салам. Эта статья является неким дополнением и продолжением этой статьи BruteForce, как недооцененный вид атаки (Account TakeOver)
Предисловие
Здесь разберем уязвимости, с которыми можно столкнуться при реализации SMS-аутентификации. Все описанные уязвимости не просто в теории, а со всеми описанными типами уязвимостями встречался на пентестах и на BugBounty.
К SMS-аутентификации переходят очень многие B2C сервисы, так как - это просто для пользователя. Не нужно запоминать какие-либо пароли, просто ввёл номер, получил код и на этом все. Но при разработке допускаются множество ошибок, которые приводят к серьезным уязвимостям и самая критическая из них, это захват аккаунта любого пользователя, зная только его номер телефона.
Разбор видов уязвимостей
На данный момент на практике удачно испробованы следующие виды уязвимостей:
1. Отсутствие Rate Limit - это самый простой случай, когда просто нет ограничений на перебор кода, который мы получили. Но также, это достаточно редкий случай, в большинстве случаем есть лимиты на перебор полученного кода и нужно искать обход.
Но был и случай, когда просто не было Rate Limit. Это было в проекте Mailru - my.33slona.ru (
2. Одинаковый код для разных эндпоинтов - это уже более интересный случай. Встретил его также на сервисе Mailru - worki.ru (
Авторизация с помощью номера, получал код и начинал перебирать этот код не на эндпоинте авторизации, а на эндпоинте регистрации, тем самым получал такой ответ:
Что такой номер уже зарегистрирован, код теперь знаем, идем с эти кодом к эндпоинту авторизации, где запросили код и вводим код, тем самым захватываем аккаунт.
3. Привязка Rate Limit к Cookie - такой способ ограничения встречается достаточно часто. Разработчики особо не напрягаясь привязывают Rate Limit к Cookie и как вы уже могли понять обход такого лимита - просто удалить куки и перебрать код. Такая ситуация также было с сервисом Mailru - am.ru (
Для части 3.1 думаю на этом стоит остановится, остальные виды разберем уже в следующей части.
Слайды с OWASP Moscow -
Также поделитесь в комментариях с какими видами уязвимостей сталкивались Вы в SMS-аутентификации. Всем удачи.
Предисловие
Здесь разберем уязвимости, с которыми можно столкнуться при реализации SMS-аутентификации. Все описанные уязвимости не просто в теории, а со всеми описанными типами уязвимостями встречался на пентестах и на BugBounty.
К SMS-аутентификации переходят очень многие B2C сервисы, так как - это просто для пользователя. Не нужно запоминать какие-либо пароли, просто ввёл номер, получил код и на этом все. Но при разработке допускаются множество ошибок, которые приводят к серьезным уязвимостям и самая критическая из них, это захват аккаунта любого пользователя, зная только его номер телефона.
Разбор видов уязвимостей
На данный момент на практике удачно испробованы следующие виды уязвимостей:
- Отсутствие Rate Limit
- Одинаковый код для разных эндпоинтов
- Привязка Rate Limit к Cookie
- Отсутствие срока жизни кода
- Каждый раз одинаковый код
- Можем предугадать ID сессии
- Блокировка пользователей
- SMS-флуд
1. Отсутствие Rate Limit - это самый простой случай, когда просто нет ограничений на перебор кода, который мы получили. Но также, это достаточно редкий случай, в большинстве случаем есть лимиты на перебор полученного кода и нужно искать обход.
Но был и случай, когда просто не было Rate Limit. Это было в проекте Mailru - my.33slona.ru (
Ссылка скрыта от гостей
). В данном случае оставалось просто найти номер, который зареган в сервисе, отправить на него код и перебрать его, без каких-либо ограничений. Ниже 2 скрина, на 1 нахождение номера, который зарегистрирован в сервисе, а на втором уже перебор кода, который был отправлен на этот номер:2. Одинаковый код для разных эндпоинтов - это уже более интересный случай. Встретил его также на сервисе Mailru - worki.ru (
Ссылка скрыта от гостей
). В данном случае было 2 эндпоинта, где можно было получать код на номер.- Регистрация - /api/user/register
- Авторизация - /api/user/auth
Авторизация с помощью номера, получал код и начинал перебирать этот код не на эндпоинте авторизации, а на эндпоинте регистрации, тем самым получал такой ответ:
Что такой номер уже зарегистрирован, код теперь знаем, идем с эти кодом к эндпоинту авторизации, где запросили код и вводим код, тем самым захватываем аккаунт.
3. Привязка Rate Limit к Cookie - такой способ ограничения встречается достаточно часто. Разработчики особо не напрягаясь привязывают Rate Limit к Cookie и как вы уже могли понять обход такого лимита - просто удалить куки и перебрать код. Такая ситуация также было с сервисом Mailru - am.ru (
Ссылка скрыта от гостей
) при сбросе пароля, там же и обходилась капча, но сейчас не об этом.Для части 3.1 думаю на этом стоит остановится, остальные виды разберем уже в следующей части.
Слайды с OWASP Moscow -
Ссылка скрыта от гостей
Также поделитесь в комментариях с какими видами уязвимостей сталкивались Вы в SMS-аутентификации. Всем удачи.