Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
moodle-grades-gradeitems — Moodle 5.2.3 - Alto - Remoto - IDOR - core_grades_get_gradeitems elenca elementi di valutazione nascosti | Kitploit
Strumenti/GitHubGitHub/abraxas/moodle-grades-gradeitems
Analisi delle VulnerabilitàSfruttamento di Applicazioni WebTest di Sicurezza delle APIRaccolta InformazioniSicurezza WebPenetration TestingApprendimento e FormazioneLab e Pratica
GitHubabraxas/moodle-grades-gradeitems

moodle-grades-gradeitems

Moodle 5.2.3 - Alto - Remoto - IDOR - core_grades_get_gradeitems elenca elementi di valutazione nascosti

Vedi Repository
103 giorni 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

Abraxas Labs - moodle-grades-gradeitems

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  moodle-grades-gradeitems

moodle-grades-gradeitems

Moodle LMS 5.2.3 - Moodle

Classe: IDOR Raggiungibilità: Remota

core_grades_get_gradeitems è ajax più il servizio mobile ufficiale, senza chiave capabilities in services.php. validate_context è l'unico controllo. Poi grade_item::fetch_all estrae ogni elemento del corso. L'array_filter scarta GRADE_TYPE_NONE, gli elementi di categoria e l'elemento del corso. Nascosto non è in quel filtro. Il gemello core_grades_get_grade_tree richiede già moodle/grade:viewall.

Uno studente iscritto invia in POST {courseid} e ottiene i nomi degli elementi di voto nascosti che l'interfaccia del registro voti dello studente continua a nascondere.

IDnessuna CVE al momento
CWECWE-862 / CWE-200
CVSSMedio: 4.3 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
ProdottoMoodle
Affetto5.2.3 tag v5.2.3 (344232c15336c71b80f9aca8359ce0e0a9f3d116)
Authstudente iscritto (moodle/grade:view; privo di viewall / viewhidden)
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1

Cosa può fare un attaccante

Attore: uno studente iscritto al corso. Invia in POST il servizio AJAX con {courseid}. La risposta contiene nomi, ID e categorie. Lo schema di ritorno non ha punteggi. Non è RCE. Non è LPE. Non è una scrittura di punteggi.

PrivilegioMetodo / sinkRicognizione / integrità / disponibilitàProvato in lab o dedotto
Leggere nome, id e categoria di un elemento di voto nascostoPOST /lib/ajax/service.php?sesskey= core_grades_get_gradeitems {courseid}RicognizioneProvato in lab. HTTP 200, i nomi includono MOODLE-GRADES-GRADEITEMS-WITNESS
Leggere nome, id e categoria di un elemento di voto visibileStessa rispostaRicognizione (prevista per i docenti)Provato in lab. i nomi includono Visible Lab Assignment
Stesso catalogo tramite il servizio mobile ufficialeStessa classe, services include MOODLE_OFFICIAL_MOBILE_SERVICERicognizioneDedotto da services.php. Il lab ha usato AJAX.
Scorrere valori courseid sequenziali per corsi a cui lo studente può accedereStesso metodo, id indovinatiRicognizioneDedotto. Il lab ha usato l'id del corso seed 2
Vedere l'elemento nascosto nell'interfaccia del registro voti dello studenteGET /grade/report/user/index.php?id=n/aProvato in lab chiuso. hidden-in-ui=False, visible-in-ui=True
Chiamare senza una sessioneAJAX con una sesskey fittizian/aProvato in lab chiuso. servicerequireslogin
Chiamare come utente autenticato non iscrittoAJAX esterno, stesso courseidn/aProvato in lab chiuso. requireloginerror
Leggere i punteggi di altri studenti o scrivere votin/an/aChiuso. Le chiavi di ritorno sono id, itemname, category
PHP RCE / OS LPEn/an/aChiuso. Questo residuo è una lettura di catalogo

Un docente o manager che ha già moodle/grade:viewall vede già il catalogo. I chiamanti guest / non autenticati necessitano comunque di un contesto di corso.

Altri residui dello stesso pin: Blackboard img file read, enrol_database SQLi, grades feedback IDOR.

Come l'ho trovato

Ho fissato moodle/moodle v5.2.3 dopo MSA-26-0042/0043. I web service dei voti erano in quella finestra MSA. get_gradeitems.php non ha ancora require_capability. L'interfaccia dello studente nascondeva già l'elemento. Il catalogo AJAX no.

Vicoli ciechi già registrati: trattare l'AJAX non autenticato 200 come la fuga (il body è servicerequireslogin); chiamare questo un IDOR sui punteggi perché il nome del metodo contiene grade (lo schema è solo nomi); aspettarsi che get_grade_tree fosse lo stesso residuo (richiede già viewall). Una reverse shell. Teatro.

Lab

Moodle v5.2.3 live su php:8.3-apache + MariaDB 11.4. Il seed iscrive labstudent, lascia laboutsider fuori dal corso e crea un elemento manuale visibile più un elemento nascosto il cui nome è il witness. run.sh copia un pin locale o git clone --depth 1 --branch v5.2.3. L'albero di Moodle non è in questo pacchetto.

python3 moodle-grades-gradeitems-Abraxas-Labs.py

oppure

cd lab
./run.sh

Target solo http://127.0.0.1:19590. Progetto compose moodle-grades-gradeitems. Lo stack viene smontato dopo l'esecuzione.

SUCCESS moodle-grades-gradeitems student-ajax=200 hidden-in-ajax=yes hidden-in-ui=no visible-in-ajax=yes visible-in-ui=yes outsider-error=yes unauth-error=yes MOODLE-GRADES-GRADEITEMS-WITNESS

La correzione

Dopo validate_context, richiedere la stessa capability di get_grade_tree: require_capability('moodle/grade:viewall', $context). Inoltre scartare gli elementi nascosti a meno che il chiamante abbia moodle/grade:viewhidden. Aggiungere un caso Behat/PHPUnit: studente iscritto, elemento manuale nascosto, core_grades_get_gradeitems deve omettere quell'elemento (o 403). L'interfaccia del registro voti dello studente lo nasconde già.

Riferimenti

  • github.com/moodle/moodle tag v5.2.3
  • get_gradeitems.php
  • Il gemello richiede già la capability: get_grade_tree.php
  • Registrazione del servizio: services.php (core_grades_get_gradeitems, nessuna capabilities)
  • Stesso pin: moodle-blackboard-img · moodle-enrol-database-sqli · moodle-grades-feedback-idor
  • CWE-862

Licenza

GNU Affero GPL v3.0. Vedi LICENSE. Solo lab su loopback. Nessuna garanzia.

Scarica lo strumento