Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-71206-PoC — PoC: Shiori JWT CheckToken никогда не перепроверяет состояние учётной записи (CVE-2026-71206, Высокий 8.2) | Kitploit
Инструменты/GitHubGitHub/nel-droid/cve-2026-71206-poc
Аутентификация и авторизацияАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьАутентификация
GitHubnel-droid/cve-2026-71206-poc

CVE-2026-71206-PoC

PoC: Shiori JWT CheckToken никогда не перепроверяет состояние учётной записи (CVE-2026-71206, Высокий 8.2)

Репозиторий
524 дней назадЕщё не проверено

Популярное

Смотреть все →

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

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-71206 — Shiori: CheckToken для JWT никогда не проверяет состояние учётной записи повторно

Продукт: go-shiori/shiori Файл: internal/domains/auth.go CWE: CWE-613 — Недостаточный срок действия сеанса (Insufficient Session Expiration) CVSS 3.1: AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L — 8.2 (Высокий) CNA: Turan Security · Запись CVE

Описание

Функция CheckToken в Shiori (internal/domains/auth.go) проверяет только HMAC-подпись JWT и возвращает встроенный объект claims.Account без изменений — она никогда не запрашивает учётную запись из базы данных повторно при каждом запросе. В кодовой базе не существует ни хранилища сессий, ни механизма отзыва токенов.

Воздействие

После выпуска JWT остаётся полностью действительным в течение всего своего срока жизни независимо от того, что в дальнейшем происходит с учётной записью. Если администратор удаляет пользователя, понижает его роль или пароль пользователя сменяется после предполагаемой компрометации, любой JWT, выданный этой учётной записи до изменения, продолжает успешно проходить аутентификацию с первоначальными claims (роль, ID учётной записи и т.д.), зашитыми в токен, — на стороне сервера нет состояния, которое можно было бы использовать для его аннулирования.

Воспроизведение

  1. Выполните аутентификацию под пользователем и перехватите выданный JWT (например, через POST /api/v1/auth/login).
  2. В роли администратора удалите учётную запись или понизьте роль пользователя.
  3. Воспроизведите исходный JWT на любом эндпоинте, требующем аутентификации:
    root@kitploit:~
    GET /api/bookmarks
    Authorization: Bearer <original JWT>
    
  4. Запрос выполняется успешно с использованием устаревших claims — удалённая/пониженная учётная запись по-прежнему имеет доступ, поскольку CheckToken проверяет только подпись и никогда не проверяет текущее состояние БД.

Корневая причина

CheckToken доверяет полезной нагрузке JWT как источнику истины о состоянии учётной записи, вместо того чтобы рассматривать её как удостоверение предъявителя (bearer credential), которое при каждом использовании следует повторно проверять по базе данных (или сверять со списком отзыва).

Рекомендации по исправлению

Повторно запрашивайте учётную запись по ID при каждом аутентифицированном запросе (или как минимум проверяйте хранилище отозванных токенов/сессий, индексируемое по ID токена (jti), которое аннулируется при удалении учётной записи, понижении роли или смене пароля), а не доверяйте встроенным claims без проверки.

Скачать инструмент