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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-29000-pac4j-jwt — CVE-2026-29000 PoC: обход аутентификации pac4j-jwt PlainJWT-in-JWE. | Kitploit
Инструменты/GitHubGitHub/strikoder-premium/cve-2026-29000-pac4j-jwt
Аутентификация и авторизацияАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на Проникновение
GitHubstrikoder-premium/cve-2026-29000-pac4j-jwt

CVE-2026-29000-pac4j-jwt

CVE-2026-29000 PoC: обход аутентификации pac4j-jwt PlainJWT-in-JWE.

Репозиторий

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
33 месяцев назадЕщё не проверено

pac4j-jwe-forge (CVE-2026-29000)

Proof-of-concept для CVE-2026-29000. Нацелен на версии pac4j-jwt до 4.5.9, 5.7.9 и 6.3.3.

Уязвимость проста: библиотека принимает PlainJWT (без подписи, alg=none) при условии, что он обёрнут в валидный JWE. Поскольку сервер публикует свой открытый RSA-ключ через JWKS-эндпоинт, любой может зашифровать произвольный неподписанный JWT в JWE, которому сервер доверится — включая JWT с ролью ROLE_ADMIN.


Как это работает

  1. Получите открытый RSA-ключ с JWKS-эндпоинта цели
  2. Создайте неподписанный JWT (alg=none) с любыми нужными claims
  3. Зашифруйте его открытым ключом сервера
  4. Отправьте полученный JWE как Bearer-токен

Сервер расшифровывает его, доверяет claims внутри и никогда не проверяет, что внутренний JWT не подписан.


Требования

Python 3.13+ с uv, либо установите зависимости вручную:

root@kitploit:~
pip install jwcrypto requests

Использование

root@kitploit:~
[uv run / python3] CVE-2026-29000.py --url <base_url> --jwks <jwks_path> [options]

Обязательные:

флагописание
--urlбазовый URL цели, например http://10.10.11.x:8080
--jwksпуть или полный URL до JWKS-эндпоинта

Необязательные:

Примеры:

root@kitploit:~
python3 exploit.py --url http://10.10.11.x:8080 --jwks /api/auth/jwks

python3 exploit.py --url http://10.10.11.x:8080 --jwks /api/auth/jwks --user john --role ROLE_ADMIN

python3 exploit.py --url http://10.10.11.x:8080 --jwks /.well-known/jwks.json --enc A128GCM

Поиск JWKS-эндпоинта

Не всегда очевидно. Хорошие места для поиска:

  • /robots.txt — часто перечисляет ограниченные или внутренние пути
  • /api/auth/jwks
  • /.well-known/jwks.json
  • /.well-known/openid-configuration

Поиск подходящих alg/enc

Если токен отклоняется, приложение может ожидать конкретный алгоритм шифрования. Проверьте /static/js/app.js на наличие чего-то вроде:

root@kitploit:~
const JWE_ALG = "RSA-OAEP-256";
const JWE_ENC = "A128GCM";

Затем запустите повторно с --enc A128GCM.

Способ хранения токена тоже обычно указан там:

root@kitploit:~
class TokenManager {
    static getToken() {
        return sessionStorage.getItem('auth_token');
    }
}

Если используется sessionStorage, замените токен напрямую в DevTools в разделе Application > Session Storage.


Затронутые версии

  • pac4j-jwt < 4.5.9
  • pac4j-jwt < 5.7.9
  • pac4j-jwt < 6.3.3

Исправлено в версиях 4.5.9, 5.7.9 и 6.3.3.

Скачать инструмент
флагзначение по умолчаниюописание
--useradminзначение для claim sub
--roleROLE_ADMINроль для подделки (ROLE_ADMIN, ROLE_MANAGER, ROLE_USER)
--issuerprincipal-platformзначение для claim iss
--encA256GCMшифрование содержимого JWE (A256GCM или A128GCM)