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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-29000-Lab — Библиотечный proof-of-concept-лабораторный стенд, демонстрирующий CVE-2026-29000 в pac4j-jwt, со сравнением уязвимой и исправленной версий с помощью Docker для показа принятия и отклонения поддельных JWT. | Kitploit
Инструменты/GitHubGitHub/rootdirective-sec/cve-2026-29000-lab
Анализ уязвимостейЭксплуатацияВеб-безопасностьАутентификация
GitHubrootdirective-sec/cve-2026-29000-lab

CVE-2026-29000-Lab

Библиотечный proof-of-concept-лабораторный стенд, демонстрирующий CVE-2026-29000 в pac4j-jwt, со сравнением уязвимой и исправленной версий с помощью Docker для показа принятия и отклонения поддельных JWT.

Репозиторий
15 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2026-29000 — PoC-лаборатория на уровне библиотеки pac4j-jwt

TL;DR

Этот репозиторий содержит PoC на уровне библиотеки для CVE-2026-29000 в pac4j-jwt.

Он сравнивает уязвимое и исправленное поведение на двух сценариях:

  • Базовый сценарий: легитимный токен должен быть принят
  • Атака: подделанный токен должен быть принят на уязвимых версиях и отклонён на исправленной версии
ВерсияБазовый сценарийАтакаРезультат
6.0.3✅✅Уязвимая
6.0.4.1✅✅Уязвимая
6.3.3✅❌Исправленная

Этот PoC демонстрирует создание аутентифицированного профиля с управляемыми атакующим subject и ролями на уязвимых версиях, тогда как исправленная версия отклоняет подделанный токен.


Что представляет собой этот проект

Это не демонстрация веб-приложения.

Это небольшая Java-программа, которая напрямую вызывает JwtAuthenticator и сравнивает несколько версий pac4j-jwt внутри Docker.

Цель — доказать три вещи:

  1. легитимные токены по-прежнему работают
  2. подделанные управляемые атакующим claims принимаются уязвимыми версиями
  3. подделанные управляемые атакующим claims отклоняются исправленной версией

Почему были выбраны эти версии

Тестируемые версии были выбраны намеренно:

  • 6.0.3 — включена, поскольку публичный технический отчёт сообщил о рабочем PoC на этой версии
  • 6.0.4.1 — включена, поскольку публичные данные advisory относят её к затронутому диапазону 6.x
  • 6.3.3 — включена, поскольку это исправленный релиз для линейки 6.x

Это даёт лаборатории три полезные контрольные точки:

  • версия с публичным PoC
  • затронутая версия, подтверждённая advisory
  • исправленная версия

Структура проекта

root@kitploit:~
.
├── docker-compose.yml
├── Dockerfile
├── pom.xml
└── src/main/java/lab/Repro.java

Роли файлов

  • docker-compose.yml Определяет тестовую матрицу для каждой версии.

  • Dockerfile Собирает и запускает PoC внутри контейнера.

  • pom.xml Определяет зависимости и собирает исполняемый fat JAR.

  • src/main/java/lab/Repro.java Собственно PoC-харнесс.


Что означают сервисы

Файл docker-compose.yml определяет три сервиса:

  • v603 = тест pac4j-jwt 6.0.3
  • v6041 = тест pac4j-jwt 6.0.4.1
  • patched = тест pac4j-jwt 6.3.3

Таким образом, эти команды означают «запустить PoC один раз против конкретной версии»:

root@kitploit:~
docker compose run --rm v603
docker compose run --rm v6041
docker compose run --rm patched

--rm означает, что временный контейнер удаляется после завершения запуска.


Как запустить

Сборка

root@kitploit:~
docker compose build --no-cache

Запуск

root@kitploit:~
docker compose run --rm v603
docker compose run --rm v6041
docker compose run --rm patched

Что делает PoC

Для каждой версии программа выполняет два сценария.

1) Базовый сценарий

Он генерирует легитимный токен и проверяет его через JwtAuthenticator.

Ожидаемый результат:

  • принимается на всех тестируемых версиях

2) Атака

Он генерирует подделанный токен с управляемыми атакующим claims и проверяет его через JwtAuthenticator.

Ожидаемый результат:

  • уязвимые версии → подделанная личность принимается
  • исправленная версия → подделанный токен отклоняется

Как читать вывод

Вывод уязвимой версии

Вы должны увидеть что-то вроде этого:

root@kitploit:~
[case] baseline
  result: ACCEPTED
  observed_subject: alice
  observed_roles: [ROLE_USER]

[case] attack
  result: ACCEPTED
  observed_subject: admin#override
  observed_roles: [ROLE_SUPERUSER, ROLE_ADMIN]

[summary]
  conclusion: VULNERABLE: forged token accepted

Значение:

  • обычный токен работает
  • подделанный токен также принимается
  • subject и роли были заменены значениями, управляемыми атакующим

Вывод исправленной версии

Вы должны увидеть что-то вроде этого:

root@kitploit:~
[case] baseline
  result: ACCEPTED
  observed_subject: alice
  observed_roles: [ROLE_USER]

[case] attack
  result: REJECTED
  reason: CredentialsException: A non-signed JWT cannot be accepted as signature configurations have been defined

[summary]
  conclusion: PATCHED: forged token rejected

Значение:

  • обычный токен работает
  • подделанный токен отклоняется
  • исправленная версия больше не принимает путь с неподписанным внутренним JWT, используемый атакой

Почему этот репозиторий фокусируется на поведении библиотеки, а не на универсальном токен-скрипте

Эта CVE затрагивает путь аутентификации на уровне библиотеки, а не отдельное приложение с одной универсальной моделью ролей.

Переиспользуемая часть — это форма атаки:

  • подделанные управляемые атакующим claims
  • зашифрованные как JWE
  • передаваемые в JwtAuthenticator

Что не универсально для реальных приложений:

  • имена claims
  • имена ролей
  • маппинг авторизации
  • ключевой материал / настройка JWKS
  • специфичная для приложения обработка профилей

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


Скриншоты

  1. docker compose run --rm v603
  2. docker compose run --rm v6041
  3. docker compose run --rm patched

Уязвимая версия: 6.0.3

example 603 output

Уязвимая версия: 6.0.4.1

example 6041 output

Исправленная версия: 6.3.3

example patched output


Ссылки

  • Security advisory pac4j для JwtAuthenticator
  • GitHub Advisory Database: CVE-2026-29000
  • Запись NVD: CVE-2026-29000
  • Технический отчёт CodeAnt: PoC обхода аутентификации с открытым ключом

Итоговый вывод

Этот проект демонстрирует три ключевых факта:

  1. легитимные базовые токены принимаются на всех тестируемых версиях
  2. подделанные управляемые атакующим claims принимаются на 6.0.3 и 6.0.4.1
  3. подделанные управляемые атакующим claims отклоняются на 6.3.3

Это ключевое доказательство «уязвимая версия против исправленной» для этой CVE в данном репозитории.

На уязвимых версиях подделанный токен не просто парсится — он создаёт аутентифицированный профиль с управляемыми атакующим subject и ролями.

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