Я нашел сайт социальной сети, позволяющий пользователям делиться видео, который был аналогичен TikTok и имел более 50 миллионов активных пользователей. Я решил не разглашать его название и будем обозначать его как example.com.
Но давайте попробуем что-то на странице авторизации...
На странице входа была возможность авторизации с использованием номера телефона. Пользователь вводит свой номер мобильного телефона и четырехзначный OTP, который он получает.
Я решил попробовать провести brute force на метод OTP с помощью вкладки Intruder.
Я отправил запрос, но, к сожалению, пакеты запросов были заблокированы, как только их количество достигло 10. Надо признать, это была хорошая реализация защиты.
Я отправил новый запрос на форму Create Account с другим номером телефона и ввел правильный OTP, который получил. Используя Do Intercept Response, я начал анализировать ответ. К моему удивлению, ответ оказался предельно простым и выглядел следующим образом:
Ответ для Valid OTP
Честно говоря, у меня не было представления, что это означает. Однако я выяснил, что этот код используется для получения данных пользователя, если введен правильный OTP.
Затем я решил проанализировать ответ с Invalid OTP.
Успех!
Мне удалось создать учетную запись, используя номер телефона друга, даже без корректного OTP. Это четко показывает, что я могу создать учетную запись с любым номером телефона без проверки OTP.
Урок усвоен!
Исследователи часто пытаются осуществить bruteforce поля OTP, но забывают анализировать ответ, отправляемый браузеру. Экспериментируйте с ответами и добивайтесь успехов в поиске уязвимостей.
Начало атаки
Я начал атаку с того, что собрал некоторую информацию о целевом сайте. Зарегистрировав учетную запись, я приступил к поиску Dashboard (панели управления). К моему удивлению, я не смог его найти, что помешало мне продолжить изучение, поскольку я обычно охочусь за XSS.Но давайте попробуем что-то на странице авторизации...
На странице входа была возможность авторизации с использованием номера телефона. Пользователь вводит свой номер мобильного телефона и четырехзначный OTP, который он получает.
Я решил попробовать провести brute force на метод OTP с помощью вкладки Intruder.
Я отправил запрос, но, к сожалению, пакеты запросов были заблокированы, как только их количество достигло 10. Надо признать, это была хорошая реализация защиты.
Атака с использованием Intruder для брутфорса OTP
Я решил не сдаваться в попытках обойти проверку OTP. Попробовал еще раз: перешел к созданию учетной записи и снова попытался выполнить брутфорс OTP, но вновь потерпел неудачу. После пары порций кофеина я решил проанализировать запрос и ответ, используя опцию Action > Do intercept > Response to this request. Этот метод позволяет атакующему модифицировать ответ, отправляемый в браузер.Я отправил новый запрос на форму Create Account с другим номером телефона и ввел правильный OTP, который получил. Используя Do Intercept Response, я начал анализировать ответ. К моему удивлению, ответ оказался предельно простым и выглядел следующим образом:
Ответ для Valid OTP
{“data”:{“det”:{},”blocks”:[]},”gsc”:”700"}
Честно говоря, у меня не было представления, что это означает. Однако я выяснил, что этот код используется для получения данных пользователя, если введен правильный OTP.
Затем я решил проанализировать ответ с Invalid OTP.
Теперь я понял, что именно этот фрагмент используется для проверки OTP. Чтобы доказать работоспособность уязвимости, я решил зарегистрироваться с использованием номера телефона своего друга, ввел неправильный OTP и просто удалил фрагмент с сообщением об ошибке Invalid verification code, заменив его на корректный фрагмент для валидного OTP, перехватив ответ.{“gsc”:”615",”message”:”Invalid verification code”}
Успех!
Мне удалось создать учетную запись, используя номер телефона друга, даже без корректного OTP. Это четко показывает, что я могу создать учетную запись с любым номером телефона без проверки OTP.
Урок усвоен!
Исследователи часто пытаются осуществить bruteforce поля OTP, но забывают анализировать ответ, отправляемый браузеру. Экспериментируйте с ответами и добивайтесь успехов в поиске уязвимостей.