Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-90907 — CLI em Python que detecta e explora a CVE-2026-90907, um bypass de autorização no com_users do Joomla! que permite a criação de contas sem autenticação; modo de verificação não destrutivo, além de PoC. | Kitploit
Ferramentas/GitHubGitHub/aorozco-sys/cve-2026-90907
Autenticação e AutorizaçãoScanners de VulnerabilidadesAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de Penetração
GitHubaorozco-sys/cve-2026-90907

CVE-2026-90907

CLI em Python que detecta e explora a CVE-2026-90907, um bypass de autorização no com_users do Joomla! que permite a criação de contas sem autenticação; modo de verificação não destrutivo, além de PoC.

Ver Repositório
11há 1 mêsAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-90907 — Criação Não Autorizada de Conta de Usuário no Joomla! CMS

Python Severity Fixed

APENAS PARA TESTES DE SEGURANÇA AUTORIZADOS. Executar o modo de exploit contra sistemas que você não possui ou para os quais não tem permissão escrita explícita para testar é ilegal. O modo padrão (CHECK) é não destrutivo e não cria nada.

Ferramenta de CLI que detecta e (opcionalmente, com -U) explora CVE-2026-90907, uma bypass de autorização de severidade média (CVSS 6.9) no núcleo do Joomla! CMS que permite a um atacante remoto não autenticado disparar a criação não autorizada de conta de usuário através do controlador com_users → profile.save — mesmo quando o registro público está desabilitado na Configuração Global.

Resumo da Vulnerabilidade

CampoValor
ID CVECVE-2026-90907
SeveridadeMédia — CVSS 6.9
TipoBypass de autorização / controle de acesso inadequado (CWE-862)
ComponenteComponente com_users, tarefa profile.save
Vetor de ataqueRemoto, não autenticado, POST em duas etapas na mesma sessão
Corrigido emJoomla! 5.4.9 e 6.1.4 (versão de segurança, 2026-09-29)

Versões afetadas

Conforme o boletim de segurança do Joomla! (2026-09-29) e fontes de advisories públicos:

  • Joomla! 1.5.0 – 5.4.8
  • Joomla! 6.0.0 – 6.1.3

O Joomla! 3.x também é afetado, mas está em Fim de Vida (End-of-Life): não receberá um patch oficial — planeje uma migração. A verificação do banner de versão da ferramenta é informativa; o veredito é comportamental (veja abaixo).

Impacto

A conta controlada pelo atacante é uma conta de front-end com baixos privilégios, sem acesso administrativo ou de backend. Ainda assim, isso permite que um atacante:

  • Crie contas mesmo quando o registro está explicitamente desabilitado
  • Reserve nomes de usuário / endereços de e-mail
  • Dispare plugins de hook de registro inesperadamente
  • Sonde a lógica interna da aplicação como uma sessão autenticada

Causa raiz

ProfileModel::save() apenas faz unset() em $data['username'] quando o nome de usuário é considerado compatível. isUsernameCompliant é derivado do estado do usuário com_users.edit.profile.data, que o controlador preenche com a requisição completa quando a validação do formulário falha. O controlador também falha em verificar o estado de login da requisição recebida. Portanto, dentro de uma sessão de convidado:

  1. W1 (seed) — POST com um nome de usuário não compatível e sem privacyconsent → a validação falha → o nome de usuário sujo é persistido no estado do usuário da sessão (nada é criado ainda).
  2. W2 (exploit) — mesma sessão, reenvie com um nome de usuário limpo mais jform[privacyconsent][privacy]=1 → a guarda unset() é ignorada → INSERT INTO #__users → redirecionamento 303 com user_id > 0.
  3. Verificação diferencial de login — POST user.login (o nome do campo é password, não passwd) com a senha correta vs. uma incorreta e leia a mensagem flash: correta → "you cannot access the private section" (autenticação OK, ACL bloqueia) / incorreta → "do not match". O diferencial é a evidência.

Instalação

git clone https://github.com/aorozco-sys/CVE-2026-90907.git
cd CVE-2026-90907
pip install -r requirements.txt   # only dependency: requests

Uso

# CHECK mode (default) — non-destructive: never sends consent, never creates an account
python3 joomla_cve_2026_90907.py https://ejemplo.com

# Verbose CHECK (full request/response log on stderr)
python3 joomla_cve_2026_90907.py https://ejemplo.com --no-color -v

# EXPLOIT mode (-U) — creates a real account in #__users (authorized targets only!)
python3 joomla_cve_2026_90907.py https://ejemplo.com \
    -U audit.user -E [email protected] -N "CVE Audit"

# Through a proxy (e.g. Burp Suite) with a custom timeout
python3 joomla_cve_2026_90907.py https://ejemplo.com -U audit.user \
    --proxy http://127.0.0.1:8080 --timeout 30

# Exploit without the differential login verification
python3 joomla_cve_2026_90907.py https://ejemplo.com -U audit.user \
    --no-verify-login

Flags

FlagDescrição
TARGETURL base (normalizada; sem barra final)
-U/--usernameAtiva o modo EXPLOIT. Sem -U → CHECK não destrutivo
-P/--passwordPadrão: gerada com secrets, 16 caracteres alfanuméricos+símbolos, sempre exibida
-E/--emailPadrão: <username>@example.invalid
-N/--namePadrão: CVE Audit
-o/--outputDiretório de evidências (padrão evidence_cve90907_<ts> sob o cwd)
--proxy URLProxy para requisições (Burp: http://127.0.0.1:8080)
--timeoutPadrão 20 s
--uaUser-Agent (padrão cve-2026-90907-audit/1.0)
--no-verify-loginIgnora o diferencial de login (modo exploit)
--verify-sslVerifica TLS (padrão: não verificar)
--no-colorSem cores ANSI
-v/--verboseLog completo de req/resp no stderr

Códigos de saída (compatíveis com CI)

CódigoSignificado
0Ok / não vulnerável / desconhecido
1Vulnerável (LIKELY no check, CONFIRMED no exploit)
2Erro operacional (rede, dependência, etc.)

Veredictos

  • VULNERABLE (LIKELY) — check: token OK + W1 processado anonimamente (303 com profile em Location, sem redirecionamento para login) + flash de erro de validação (ex.: mensagem de política de privacidade obrigatória). Confirmação definitiva = modo exploit.
  • NOT VULNERABLE (comportamental) — W1 redireciona para login ou responde 401/403/404: processamento anônimo bloqueado.
  • UNKNOWN — sinais ausentes (sem token, versão ilegível, etc.). As lacunas são listadas no console e em summary.json.
  • VULNERABLE (CONFIRMED) — exploit: Location com user_id > 0 após W2.

Artefatos de evidência

Cada execução grava um diretório -o com timestamp contendo 00_token.txt, 01_version.txt, 02_w1_seed.txt, 03_w2_exploit.txt, 04_login_correct.txt, 05_login_wrong.txt e summary.json. Cada arquivo registra a REQUEST completa (método/URL/cabeçalhos-chave/corpo), a RESPONSE (status, Location, Server, flash extraído, primeiros 500 bytes do corpo) e timestamps ISO — pronto para anexar a um relatório de pentest.

Segurança operacional

  • O modo CHECK nunca envia privacyconsent e usa um nome de usuário não conforme (probe()): o salvamento falha nas regras do formulário e nada é persistido.
  • Guarda de aborto: se W1 alguma vez retornar user_id > 0 (o que não deveria acontecer), o modo exploit aborta antes de W2.
  • Após um exploit bem-sucedido, a ferramenta exibe um aviso de limpeza: exclua a conta criada via Joomla Admin → Users (isso também remove a linha em user_usergroup_map).

Remediação

  • Atualize as instâncias de produção para Joomla! 5.4.9 ou 6.1.4 imediatamente.
  • Em sites onde o registro estava desabilitado, ordene os Usuários do backend por data de registro e audite o grupo padrão em busca de contas não reconhecidas criadas antes da aplicação do patch.

Referências

  • CVE-2026-90907 — NVD
  • CVE-2026-90907 — registro em CVE.org
  • Joomla! Security Bulletin / versão de segurança coordenada 2026-09-29 (16 correções, incluindo esta — corrigida em 5.4.9 e 6.1.4)

Licença

MIT — consulte LICENSE.

Baixar ferramenta