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-enrol-database-sqli — Moodle 5.2.3 - Alto - Remoto - SQLi - enrol_database concatena o idnumber do curso no SQL | Kitploit
Ferramentas/GitHubGitHub/abraxas/moodle-enrol-database-sqli
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de PenetraçãoSegurança de Banco de DadosLabs e Prática
GitHub
abraxas/moodle-enrol-database-sqli

moodle-enrol-database-sqli

Moodle 5.2.3 - Alto - Remoto - SQLi - enrol_database concatena o idnumber do curso no SQL

Ver Repositório
9há 4 diasAinda não revisado

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-enrol-database-sqli

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  moodle-enrol-database-sqli

moodle-enrol-database-sqli

Moodle LMS 5.2.3 - Moodle

Classe: SQLi Alcance: Remoto

enrol_database::db_get_sql ainda escapa com barras e concatena. O MSA-26-0005 / MDL-88138 parametrizou o auth_db como Execute($sql, [$value]). Este plugin não copiou esse formato. Padrões nas configurações: dbsybasequoting=0, localcoursefield=idnumber. O sink é o banco de dados de matrícula externo. O $DB do núcleo do Moodle não está nesse caminho.

Um professor com permissão de edição em um site com o enrol_database habilitado define o idnumber do curso. O cron interpola esse valor. Linhas extras retornam do banco de matrícula.

IDainda sem CVE
CWECWE-89
CVSSAlto: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
ProdutoMoodle
Afetadotag 5.2.3 v5.2.3 (344232c15336c71b80f9aca8359ce0e0a9f3d116). O plugin enrol_database precisa estar ativo.
Autenticaçãoprofessor com permissão de edição (idnumber do curso, mapeamento local padrão)
LicençaGNU Affero GPL v3.0
Labapenas 127.0.0.1

O que um atacante pode fazer

Um professor com permissão de edição em um site com o enrol_database habilitado injeta SQL no banco de dados de matrícula externo ao definir o idnumber do curso. O cron sync_enrolments então executa esse SQL.

PrivilégioMétodo / sinkReconhecimento / integridade / disponibilidadeComprovado em lab ou inferido
Inserir um fragmento SQL no SELECT de matrícula externoCron sync_enrolments -> db_get_sql($table, array($coursefield=>$course->mapping), ...) -> $extdb->Execute($sql)Integridade da string de consultaComprovado em lab. SQL concatenado é WHERE courseid = 'LABCOURSE\'' OR 1=1 -- '
Ler linhas de matrícula de outros cursos nesse banco externoMesmo SELECT após o fechamento da stringReconhecimentoComprovado em lab. Limpo: 1 linha teacher-local. Injeção: 2 linhas incluindo MOODLE-ENROL-DATABASE-SQLI-WITNESS
Ignorar a consulta quando o plugin está desativadoMesmo gadget, plugin=offn/aComprovado em lab fechado. executed=false, SQL vazio, 0 linhas
Manter o mesmo payload como parâmetro vinculadoResquício do auth_db do MSA-26-0005: Execute($sql, [$value])n/aComprovado em lab fechado. style=param retornou 0 linhas, SQL contém ?
Matricular / desmatricular / atribuir papel a usuários do Moodle nomeados nas linhas extrasApós o cron aplicar requestedenrolsIntegridade das matrículasInferido. O lab para nas linhas extras no banco de matrícula
FILE / INTO OUTFILE como o usuário do banco de matrículaMesmo sink se essa conta tiver FILEIntegridade / disponibilidade desse host de bancoInferido. Não demonstrado. Não é LPE de SO
Caminho controlado por estudanteApenas se o admin mapear localuserfield=email (ou similar)n/aInferido. O caminho padrão é o idnumber do professor

Fechado neste resquício: $DB do núcleo do Moodle; plugin desativado (sem consulta); acesso não autenticado; shell do SO; consultas empilhadas (este gadget mysqli é de instrução única). O Moodle padrão sem enrol_database não é este bug.

Mesmos resquícios do pin: leitura de arquivo img do Blackboard, IDOR de feedback de notas, itens de nota ocultos.

Como eu encontrei

Fiz o pin do moodle/moodle v5.2.3 após o MSA-26-0042/0043. O MSA-26-0005 fechou o auth_db com um placeholder. Abri o enrol_database porque ele fala com o mesmo tipo de banco externo e ainda tem db_addslashes.

dbsybasequoting tem padrão 0, então apenas ' é duplicado. Uma barra invertida seguida de aspas no idnumber fecha a string do MySQL.

Caminhos errados já registrados: tratar o $DB do núcleo do Moodle como o sink (não é); chamar isso de LPE de SO porque FILE existe como privilégio do MySQL (não demonstrado, não é este resquício); email de estudante como o mapeamento padrão (o admin precisa alterar localuserfield). Um reverse shell. Teatro.

Lab

Gadget fiel dos construtores do pin, não um app PHP completo do Moodle. php:8.3-cli serve o db_get_sql / db_addslashes / db_encode copiados. mysql:8.0 contém duas linhas de matrícula.

python3 moodle-enrol-database-sqli-Abraxas-Labs.py

ou

cd lab
./run.sh

Alvo apenas http://127.0.0.1:19570. Projeto Compose moodle-enrol-database-sqli. A stack é desmontada após a execução.

SUCCESS moodle-enrol-database-sqli how=gadget plugin-off=no-query clean-rows=1 inject-rows=2 sql-concat=yes param-rows=0 extra=yes sink=enrol-db MOODLE-ENROL-DATABASE-SQLI-WITNESS

A correção

Copie as consultas parametrizadas do auth_db (MDL-88138). Passe o valor mapeado de curso / usuário como Execute($sql, [$value]). Não concatene db_addslashes em '$value'. Adicione um teste que garanta que uma aspa no idnumber do curso não retorne linhas de outros cursos.

Referências

  • github.com/moodle/moodle tag v5.2.3
  • lib.php (db_get_sql, db_addslashes, sync_enrolments)
  • Corrigido próximo (não este plugin): MSA-26-0005 / MDL-88138 auth_db
  • Mesmo pin: moodle-blackboard-img · moodle-grades-feedback-idor · moodle-grades-gradeitems
  • CWE-89

Licença

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

Baixar ferramenta