Обычно такие статьи начинаются со слов: «Я открыл Burp Suite…».

Но не в этот раз.

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

Этап разведки

Я начал со стандартных методов разведки и заметил, что целевое приложение имело несколько поддоменов, например:

Сначала я не придавал большого значения поддоменам. Но во время более глубокого тестирования наткнулся на кое-что интересное — функцию под названием “Edit Entry”.



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

Углубляемся

Я решил разобраться. Анализируя поток запросов, я наткнулся на очень интересный эндпоинт на поддомене onboarding.app.example.com:

onboarding.app.example.com/claiming/{{entry_id}}/verified_claims/{{uuid}}

Это сразу привлекло мое внимание. Наличие uuid в URL выглядело странным и потенциально небезопасным.

Идея, которая изменила ход событий

Я связался со своим другом. Вместе мы устроили мозговой штурм и придумали смелую идею:

  • Зарегистрировать новую учетную запись.

  • Получить собственный uuid (который мы контролируем).

  • Но вот в чем загвоздка: у каждой учетной записи есть связанный entry_id, который используется для отображения продуктов или пользовательского контента.

  • А что если мы подставим вместо нашего uuid uuid целевого аккаунта, который хотим получить? И это сработало!

Итак, если мы продолжим использовать свой собственный uuid, но подставим entry_id жертвы — угадайте, что произойдет?

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

Кому нужен Burp, когда есть любопытство, браузер, немного креатива и хорошие друзья?

Persistent Token Abuse

Одна из самых критичных особенностей этой уязвимости — токен, используемый для “привязки” entry, не истекает. Более того, один и тот же токен можно многократно использовать раз без каких-либо ограничений по количеству попыток, инвалидирования или других ограничений.

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

Выводы

— Не стоит недооценивать простые на вид эндпоинты. URL вроде /claiming/{{entry_id}}/verified_claims/{{uuid}} может быть дверью к критической уязвимости.

— Ручное тестирование иногда лучше инструментов. Порой твой мозг и любопытство дадут больше, чем автоматические сканеры вроде Burp.

— Многократно используемые и не истекающие токены — это катастрофа для безопасности. Токены должны быть короткоживущими, одноразовыми и проверяться на стороне сервера.

— Взаимодействия между поддоменами опасны, если не защищены должным образом. Всегда проверяйте права и контроль доступа на каждом домене.

— Понимание и удачные догадки относительно логики работы приложения помогают находить изъяны. Следите как используются параметры вроде uuid и entry_id.

— Думайте как атакующий, а не пользователь. Подставляйте значения, проверяйте все предположения.

Ещё больше познавательного контента в Telegram-канале — Life-Hack - Хакер

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


  1. RISA
    11.05.2025 08:46

    Прочитал два раза, потом сходил прочитал оригинал и всё ещё ничего не понял. При чём тут поддомены, при чём тут указанный URL, при чём тут друг автора, и что за entry_id и что автору дал этот захват и как именно? А потом вдруг "Persistent Token Abuse", как, откуда? И мне не понятен уровень и масштаб проблемы, т.к. целевой сайт или платформа не называются в статье, но статья звучит так, что кто то взломал сайт какого то случайного "школьника" и радуется радостью другого "школьника".