
Доказательство концепции эксплуатации для CVE-2026-29000, обход аутентификации в pac4j-jwt через вложенный PlainJWT с alg:none внутри контейнера JWE.
Этот репозиторий содержит proof-of-concept (POC) для уязвимости обхода аутентификации в pac4j-jwt (CVE-2026-29000). Уязвимость позволяет злоумышленнику обойти проверку подписи, вложив PlainJWT (с использованием alg: none) внутрь контейнера JWE (JSON Web Encryption).
Атака работает за счёт использования готовности сервера расшифровать JWE, зашифрованный его открытым ключом, и впоследствии довериться внутреннему JWT без проверки его подписи, при условии использования алгоритма none.
Убедитесь, что у вас установлен Python 3 вместе с необходимыми зависимостями:
pip install requests jwcrypto
Используйте exp.py для получения открытого ключа цели из конечной точки JWKS, создания вредоносного токена с привилегиями ROLE_ADMIN и его обёртки в JWE.
python3 exp.py <TARGET_URL> --user admin --role ROLE_ADMIN
Пример:
python3 exp.py http://localhost:8080
После получения поддельного токена используйте app.py для взаимодействия с защищёнными конечными точками API.
python3 app.py <TARGET_URL> <FORGED_TOKEN>
Тестирование конкретной конечной точки:
python3 app.py http://localhost:8080 <FORGED_TOKEN> --endpoint /api/users
exp.py: Основной скрипт эксплойта, который получает JWKS, создаёт PlainJWT и подделывает JWE.app.py: Вспомогательный скрипт для тестирования поддельного токена на обнаруженных конечных точках API (/api/dashboard, /api/users, /api/settings).Данный POC предназначен только для образовательных целей и авторизованного тестирования безопасности. Несанкционированный доступ к компьютерным системам является незаконным.