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
moodle-grades-gradeitems — Moodle 5.2.3 - Alto - Remoto - IDOR - core_grades_get_gradeitems lista itens de nota ocultos | Kitploit
Ferramentas/GitHubGitHub/abraxas/moodle-grades-gradeitems
Análise de VulnerabilidadesExploração de Aplicações WebTestes de Segurança de APIsColeta de InformaçõesSegurança WebTestes de PenetraçãoAprendizado e EducaçãoLabs e Prática
GitHubabraxas/moodle-grades-gradeitems

moodle-grades-gradeitems

Moodle 5.2.3 - Alto - Remoto - IDOR - core_grades_get_gradeitems lista itens de nota ocultos

10há 3 diasAinda não revisado
Ver Repositório

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

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 Alcance: Remoto

core_grades_get_gradeitems é ajax mais o serviço móvel oficial, sem chave capabilities em services.php. validate_context é a única barreira. Depois, grade_item::fetch_all despeja todos os itens do curso. O array_filter descarta GRADE_TYPE_NONE, itens de categoria e o item do curso. Oculto não está nesse filtro. O irmão core_grades_get_grade_tree já exige moodle/grade:viewall.

Um estudante matriculado faz POST de {courseid} e obtém nomes de itens de nota ocultos que a UI do boletim do estudante ainda esconde.

IDsem CVE ainda
CWECWE-862 / CWE-200
CVSSMédio: 4.3 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
ProdutoMoodle
Afetado5.2.3 tag v5.2.3 (344232c15336c71b80f9aca8359ce0e0a9f3d116)
Autenticaçãoestudante matriculado (moodle/grade:view; sem viewall / viewhidden)
LicençaGNU Affero GPL v3.0
Labapenas 127.0.0.1

O que um atacante pode fazer

Autor: um estudante matriculado no curso. Ele faz POST do serviço AJAX com {courseid}. A resposta são nomes, IDs e categorias. O esquema de retorno não tem notas. Não é RCE. Não é LPE. Não é escrita de nota.

PrivilégioMétodo / sinkRecon / integridade / disponibilidadeComprovado em lab ou inferido
Ler nome, id e categoria de item de nota ocultoPOST /lib/ajax/service.php?sesskey= core_grades_get_gradeitems {courseid}ReconComprovado em lab. HTTP 200, nomes incluem MOODLE-GRADES-GRADEITEMS-WITNESS
Ler nome, id e categoria de item de nota visívelMesma respostaRecon (destinado a professores)Comprovado em lab. nomes incluem Visible Lab Assignment
Mesmo catálogo pelo serviço móvel oficialMesma classe, services inclui MOODLE_OFFICIAL_MOBILE_SERVICEReconInferido de services.php. Lab usou AJAX.
Percorrer valores sequenciais de courseid para cursos que o estudante pode acessarMesmo método, ids adivinhadosReconInferido. Lab usou o id de curso semeado 2
Ver o item oculto na UI do boletim do estudanteGET /grade/report/user/index.php?id=n/aComprovado em lab fechado. hidden-in-ui=False, visible-in-ui=True
Chamar sem sessãoAJAX com sesskey fictícian/aComprovado em lab fechado. servicerequireslogin
Chamar como usuário logado que não está matriculadoAJAX de outsider, mesmo courseidn/aComprovado em lab fechado. requireloginerror
Ler notas de outros estudantes ou escrever notasn/an/aFechado. Chaves de retorno são id, itemname, category
PHP RCE / OS LPEn/an/aFechado. Este resquício é uma leitura de catálogo

Um professor ou gestor que já tem moodle/grade:viewall já vê o catálogo. Chamadores convidados / não autenticados ainda precisam de um contexto de curso.

Resquícios do mesmo pin: Blackboard img file read, enrol_database SQLi, grades feedback IDOR.

Como eu encontrei

Fiz pin de moodle/moodle v5.2.3 após MSA-26-0042/0043. Os web services de notas estavam nessa janela de MSA. get_gradeitems.php ainda não tem require_capability. A UI do estudante já escondia o item. O catálogo AJAX não.

Caminhos errados já registrados: tratar AJAX não autenticado 200 como o vazamento (o corpo é servicerequireslogin); chamar isso de IDOR de nota porque o nome do método tem grade (o esquema é apenas nomes); esperar que get_grade_tree fosse o mesmo resquício (ele já exige viewall). Um reverse shell. Teatro.

Lab

Moodle v5.2.3 ao vivo em php:8.3-apache + MariaDB 11.4. O seed matricula labstudent, deixa laboutsider fora do curso e cria um item manual visível mais um item oculto cujo nome é a testemunha. run.sh copia um pin local ou git clone --depth 1 --branch v5.2.3. A árvore do Moodle não está neste pacote.

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

ou

cd lab
./run.sh

Alvo apenas http://127.0.0.1:19590. Projeto Compose moodle-grades-gradeitems. A stack é derrubada após a execução.

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

A correção

Após validate_context, exigir a mesma cap que get_grade_tree: require_capability('moodle/grade:viewall', $context). Também descartar itens ocultos a menos que o chamador tenha moodle/grade:viewhidden. Adicionar um caso Behat/PHPUnit: estudante matriculado, item manual oculto, core_grades_get_gradeitems deve omitir esse item (ou 403). A UI do boletim do estudante já o esconde.

Referências

  • github.com/moodle/moodle tag v5.2.3
  • get_gradeitems.php
  • O irmão já exige a cap: get_grade_tree.php
  • Registro do serviço: services.php (core_grades_get_gradeitems, sem capabilities)
  • Mesmo pin: moodle-blackboard-img · moodle-enrol-database-sqli · moodle-grades-feedback-idor
  • CWE-862

Licença

GNU Affero GPL v3.0. Veja LICENSE. Apenas lab em loopback. Sem garantia.

Baixar ferramenta