Привет всем,

Сегодня я хочу поделиться своим опытом обнаружения уязвимости, позволяющей захватить учетную запись (ATO) с помощью отравления ссылки для сброса пароля. Во время участия в программе, охватывающей миллионы пользователей — крупной компании в сфере электронной коммерции, которую я буду называть redacted.com — я тестировал функции аутентификации и наткнулся на функцию «Запрос на сброс пароля». Эта функция предлагает пользователям ввести адрес электронной почты для получения ссылки для сброса пароля.

Когда я начал исследовать эту программу, я находился в аэропорту в ожидании рейса. Имея немного свободного времени, я решил углубиться в вопросы безопасности программы. Если бы я знал, что эта неформальная сессия тестирования приведет к важному открытию! :))

Начнем нашу историю, SQL-инъекция

Поскольку существует параметр электронной почты, это указывает на наличие базы данных на стороне сервера для обработки этих данных, что делает параметр email лучшим местом для тестирования на уязвимость SQL-инъекции.

Команда для выполнения тестирования с помощью SQLMap:

sqlmap -r testsql --dbs --tamper=space2comment,space2morehash --batch

Брутфорс параметров:

Во время тестирования мое внимание привлекла интересная деталь: все параметры в теле запроса начинались с префикса dwfrm_requestpassword. Этот уникальный префикс вызвал у меня любопытство, и я подумал: «Что если попробовать перебрать эти параметры одним запросом?» Это подтолкнуло меня к экспериментам, чтобы выяснить, может ли манипуляция параметрами привести к неожиданному поведению или выявить потенциальные уязвимости.

Сначала я загрузил список параметров из базы данных Arjun по следующей ссылке: https://raw.githubusercontent.com/s0md3v/Arjun/refs/heads/master/arjun/db/large.txt. Затем я открыл этот список в Sublime Text, чтобы начать настраивать его в соответствии с моим подходом к тестированию.

После открытия списка параметров в Sublime Text я использовал регулярное выражение для замены, чтобы добавить префикс dwfrm_requestpassword_ в начале каждой строки. Для этого я использовал символ ^, чтобы указать начало строки, и добавил данный префикс. Также я добавил =evil в конце каждого параметра, используя символ $ для обозначения конца строки, как показано на скриншоте. Эта настройка позволяет мне тестировать различные комбинации параметров с общим префиксом и суффиксом, что потенциально может выявить интересные поведенческие особенности системы.

Я скопировал все измененные параметры из Sublime Text и вставил их построчно в инструмент Repeater в Burp Suite. Затем я нажал «Change Body Encoding», чтобы убедиться, что параметры были правильно отформатированы для запроса. Эта настройка позволила мне систематически тестировать каждый параметр в Burp, что упростило анализ ответов и проверку на наличие необычного поведения или уязвимостей.

После отправки измененных запросов в Burp и анализа ответов я получил письмо с ссылкой для сброса пароля. К моему удивлению, ссылка содержала мой пользовательский путь /evil. Затем я отфильтровал и протестировал различные параметры и в конечном итоге обнаружил, что уязвимым параметром оказался dwfrm_requestpassword_return. Этот параметр позволил мне внедрить пользовательские значения в ссылку для сброса, выявив потенциальную уязвимость открытого перенаправления или инъекции.

Я изменил значение уязвимого параметра dwfrm_requestpassword_return на свою ссылку Burp Collaborator и отправил измененную ссылку для сброса жертве. Как видно, когда жертва кликает на эту «волшебную ссылку», вместо того чтобы просто войти в систему, она перенаправляется на мой сервер Collaborator. Эта настройка позволяет мне захватывать учетные данные жертвы или информацию о сессии, демонстрируя потенциальную уязвимость открытого перенаправления или кражи учетных данных.

Мы в телеграме

Комментарии (2)


  1. seyko2
    05.11.2024 10:08

    Как то совсем непонятно. Обычно же ссылки для сброса пароля на email приходят. Надо, значит, какой то реальный email указать. IP, с которого запрос приходит, да и информация об оборудовании, тоже фиксируется. Если сменил комп, владельцу аккаунта присылается сообщение об входе с нового устройства Тут же вроде и попытки войти (сменить пароль) нет. Про имя аккаунта - тоже ничего не сказано: кому то пересылается полученное письмо (явно не с адреса сервиса) и тот должен эту ссылку нажать? С какой стати? (если он не заказывал сброс). Странная и путанная статья.


    1. GORrand
      05.11.2024 10:08

      Насколько я понял. Суть в том, что мы для целевой атаки на user@example.com отправляем ссылку на восстановление от имени легитимного сервера, но которая ведёт на наш ресурс.