User is interested in pentesting and Bug Bounty programs, particularly related to web application security.Вітаємо в HackerPlus! 🌐💻
Ми спеціалізуємося на пентестингу та Bug Bounty для покращення безпеки веб-додатків. Ми ділимося звітами про виявлені вразливості та поширюємо знання, щоб допомогти розвивати спільноту кібербезпеки.
HackerPlus — разом ми робимо цифровий світ безпечнішим. 🛡️
Команда HackerPlus+ вирішила створити акаунт на HackerOne, щоб брати участь у виявленні вразливостей безпеки в реальних програмах, з метою освітлювати інші та ділитися знаннями на практиці. Звіти будуть публікуватися, щоб пояснити типи виявлених вразливостей і як їх виявляти, при цьому суворо уникаючи розкриття деталей приватних програм. Основною метою є поширення знань та ефективна підтримка спільноти безпеки.
Тепер ми поговоримо про Zero Click Account Takeover — маніпуляції з JWT токенами через https://target .com
Ми виявили критичну вразливість у системі аутентифікації програми, де зловмисник може використати JWT токен користувача для його заміни або маніпуляції, щоб отримати доступ до акаунтів інших користувачів. Ця вразливість виникає через те, що сервер не перевіряє належним чином підпис токена або сесію, пов’язану з токеном користувача.
Кроки для експлуатації вразливості:
1- Крок 1: Увійти в перший акаунт, використовуючи дані користувача (A), та отримати його JWT токен з відповіді сервера.
2- Крок 2: Увійти в другий акаунт, використовуючи дані користувача (B), та отримати його токен.
3- Крок 3: Замінити токени між акаунтами:
- Використати токен першого користувача для доступу до даних другого користувача.
- Використати токен другого користувача для доступу до даних першого користувача.
4- Крок 4: Помітити, що сервер обробляє запити, використовуючи змінені токени, як ніби вони були видані правильними акаунтами без додаткової перевірки.
5- Надіслати змінений запит за допомогою іншого токена на сервер, і сервер відповість, як ніби запит надійшов від правильного користувача.
#Аналіз JWT токенів
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) або його автентичність.
Вразливість була надіслана на HackerOne.
Програми: HackerOne BBP
Час видобутку вразливості: 25 хвилин
Сподіваємося, що це було корисно.
Слідкуйте за нами на платформі X: https://x.com/HackerPllus
Команда HackerPlus+
Перекладено з: Zero Click Account Takeover — JWT Token Manipulation via Programs HackerOne