Zero Click захоплення акаунтів — маніпуляція JWT токенами через програми HackerOne

User is interested in pentesting and Bug Bounty programs, particularly related to web application security.Вітаємо в HackerPlus! 🌐💻
Ми спеціалізуємося на пентестингу та Bug Bounty для покращення безпеки веб-додатків. Ми ділимося звітами про виявлені вразливості та поширюємо знання, щоб допомогти розвивати спільноту кібербезпеки.

HackerPlus — разом ми робимо цифровий світ безпечнішим. 🛡️

pic

Команда HackerPlus+ вирішила створити акаунт на HackerOne, щоб брати участь у виявленні вразливостей безпеки в реальних програмах, з метою освітлювати інші та ділитися знаннями на практиці. Звіти будуть публікуватися, щоб пояснити типи виявлених вразливостей і як їх виявляти, при цьому суворо уникаючи розкриття деталей приватних програм. Основною метою є поширення знань та ефективна підтримка спільноти безпеки.

pic

Тепер ми поговоримо про Zero Click Account Takeover — маніпуляції з JWT токенами через https://target .com

Ми виявили критичну вразливість у системі аутентифікації програми, де зловмисник може використати JWT токен користувача для його заміни або маніпуляції, щоб отримати доступ до акаунтів інших користувачів. Ця вразливість виникає через те, що сервер не перевіряє належним чином підпис токена або сесію, пов’язану з токеном користувача.

Кроки для експлуатації вразливості:

1- Крок 1: Увійти в перший акаунт, використовуючи дані користувача (A), та отримати його JWT токен з відповіді сервера.

pic

2- Крок 2: Увійти в другий акаунт, використовуючи дані користувача (B), та отримати його токен.

3- Крок 3: Замінити токени між акаунтами:

pic

  • Використати токен першого користувача для доступу до даних другого користувача.
  • Використати токен другого користувача для доступу до даних першого користувача.

4- Крок 4: Помітити, що сервер обробляє запити, використовуючи змінені токени, як ніби вони були видані правильними акаунтами без додаткової перевірки.

5- Надіслати змінений запит за допомогою іншого токена на сервер, і сервер відповість, як ніби запит надійшов від правильного користувача.

#Аналіз JWT токенів

pic

sub (Subject): 4385971

Мета: Означає ідентифікатор користувача, який має токен. Важливість: Пов’язує токен з конкретним користувачем у системі.

Підсумок JWT Токену:

Цей JWT payload надає відомості для аутентифікації та авторизації користувача в системі. Ключові атрибути, такі як e, n та i**, визначають вікно дії токену, в той час як account_id та sub пов’язують його з конкретними даними користувача та акаунту. Додаткові поля, такі як jti та typ, забезпечують безпеку та правильну класифікацію токену.

Підсумок хакера

Це означає, що після дешифрування JWT токена немає нічого, що ідентифікує акаунт, окрім sub. Іншими словами, якщо ви зміните значення субтокена в JWT, ви увійдете в акаунт іншого користувача. Давайте поясню це більш детально. Тепер я увійшов в акаунт, який має номер 1, і sub був 15. Я отримав запит і зберіг його. Потім увійшов в акаунт номер 20, отримав запит і попросив подивитися відповідь перед відправкою на сервер. Тоді я взяв JWT токен і змінив значення sub з 20 на 15 і надіслав запит. І система впустила мене в акаунт номер один.
Це сталося тому, що сервер недостатньо перевіряє підпис токена (JWT Signature) або його автентичність.

pic

Вразливість була надіслана на HackerOne.

Програми: HackerOne BBP

Час видобутку вразливості: 25 хвилин

Сподіваємося, що це було корисно.

Слідкуйте за нами на платформі X: https://x.com/HackerPllus

Команда HackerPlus+

Перекладено з: Zero Click Account Takeover — JWT Token Manipulation via Programs HackerOne

Leave a Reply

Your email address will not be published. Required fields are marked *