Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
moodle-grades-feedback-idor — Moodle 5.2.3 - 높음 - 원격 - IDOR - core_grades_get_feedback가 분리 그룹 검사를 건너뜀 | Kitploit
도구/GitHubGitHub/abraxas/moodle-grades-feedback-idor
Vulnerability AnalysisExploitationWeb Application ExploitationInformation GatheringSecurity VirtualizationWeb SecurityPenetration TestingLabs & Practice
GitHubabraxas/moodle-grades-feedback-idor

moodle-grades-feedback-idor

Moodle 5.2.3 - 높음 - 원격 - IDOR - core_grades_get_feedback가 분리 그룹 검사를 건너뜀

저장소 보기
11617일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - moodle-grades-feedback-idor

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

분석 문서: https://abraxaslabs.tech/research/moodle-grades-feedback-idor

moodle-grades-feedback-idor

Moodle LMS 5.2.3 - Moodle

분류: IDOR 도달 범위: 원격

core_grades_get_feedback는 여전히 require_capability('gradereport/grader:view')만 호출합니다. 다른 성적 웹 서비스들은 MSA-26-0016 / MDL-88667 이후 groups_user_groups_visible / groups_group_visible 검사를 추가로 갖추게 되었지만, 이 AJAX 서비스에는 추가되지 않았습니다. JSON 응답에는 feedbacktext, fullname, picture, 그리고 첫 번째 신원 필드가 포함되어 반환됩니다.

Separate groups 과정에서 accessallgroups 권한이 없는 비편집 교사가 다른 학생의 userid를 POST하여 해당 그룹의 피드백을 읽을 수 있습니다.

ID아직 CVE 없음
CWECWE-863 / CWE-200
CVSSMedium: 4.3 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
제품Moodle
영향 버전5.2.3 태그 v5.2.3 (344232c15336c71b80f9aca8359ce0e0a9f3d116)
인증gradereport/grader:view 권한은 있으나 moodle/site:accessallgroups 권한은 없는 비편집 교사. Separate groups 과정.
라이선스GNU Affero GPL v3.0
실습 환경127.0.0.1 전용

공격자가 할 수 있는 일

작성자: Separate groups 과정에 등록되어 Group A에만 속하고, grader view 권한은 있으나 access-all-groups 권한은 없는 비편집 교사. 이 교사가 다른 등록 학생의 userid(순차 정수)를 골라 AJAX 서비스를 호출합니다. RCE도 아니고, LPE도 아니며, 점수 쓰기도 아닙니다.

권한메서드 / 싱크정찰 / 무결성 / 가용성실습 입증 또는 추론
다른 그룹의 성적 피드백 읽기POST /lib/ajax/service.php?sesskey= core_grades_get_feedback {courseid, userid, itemid}정찰실습 입증. HTTP 200, error=false, feedbacktext에 MOODLE-GRADES-FEEDBACK-IDOR-WITNESS 포함
해당 학생의 신원 필드와 표시 이름 읽기동일 응답의 additionalfield / fullname / picture정찰실습 입증. [email protected], fullname=Student Bravo
동일 과정 내 순차 userid 값 탐색동일 메서드, 추측한 id정찰추론. 실습에서는 시드된 Group B id 사용
형제 선택기를 통해 Group B 목록 조회core_grades_get_gradable_users {courseid, groupid=B}해당 없음실습 입증 차단됨. cannotaccessgroup
학생이 동일한 피드백 서비스 호출student 역할, 동일 인자해당 없음실습 입증 차단됨. nopermissions
동일 그룹 피드백(Group A 학생)Student Alpha에 대한 교사 호출정찰(의도된 동작)실습 입증 허용됨. HTTP 200, error=false
PHP RCE / OS LPE / 성적 쓰기해당 없음해당 없음차단됨. 이 잔여 취약점은 피드백과 프로필 필드의 읽기입니다

Separate groups가 없는 기본 Moodle, 또는 이미 moodle/site:accessallgroups 권한을 가진 교사는 이 잔여 취약점에 해당하지 않습니다. 해당 권한을 가진 편집 교사는 이미 모든 그룹을 볼 수 있습니다.

동일 버전의 다른 잔여 취약점: Blackboard img 파일 읽기, enrol_database SQLi, 숨겨진 성적 항목.

발견 방법

moodle/moodle v5.2.3을 MSA-26-0042/0043 이후로 고정했습니다. MSA-26-0016은 다른 성적 웹 서비스들의 그룹 검사를 막았습니다. get_feedback.php는 그 대상에 포함되지 않았습니다. 채점자 UI는 강화되었습니다. 이 AJAX 서비스는 그렇지 않았습니다.

이미 기록된 잘못된 판단들: 형제 서비스인 get_gradable_users의 누락을 전부인 양 다룬 것(그것은 이미 cannotaccessgroup을 발생시킵니다); 페이로드에 itemid가 있다고 해서 이를 점수 쓰기라고 부른 것(이 서비스는 읽기입니다); 학생을 공격자로 본 것(nopermissions). 리버스 셸. 쇼에 불과합니다.

Lab

php:8.3-cli + MariaDB 11.4에서 실행되는 라이브 Moodle v5.2.3. 시드는 Separate-groups 코스를 만들고, 교사는 Group A에만, 학생 B는 Group B에만 속하며, moodle/site:accessallgroups에 CAP_PREVENT가 설정되고, 피드백이 증거가 되는 수동 성적 항목을 포함합니다. how=live.

Compose는 ../../vendors/moodle/src를 /opt/moodle-pin으로 바인드 마운트합니다(경로는 lab/docker-compose.yml 기준 상대 경로). moodle/moodle 태그 v5.2.3을 해당 경로에 클론하거나, 볼륨을 자신의 체크아웃으로 지정하세요. Moodle 트리는 이 팩에 포함되어 있지 않습니다.

python3 moodle-grades-feedback-idor-Abraxas-Labs.py

또는

cd lab
./run.sh

오직 http://127.0.0.1:19580만 대상으로 합니다. Compose 프로젝트 moodle-grades-feedback-idor. 실행 후 스택은 종료됩니다.

SUCCESS moodle-grades-feedback-idor how=live pin=v5.2.3 teacher-role=teacher accessallgroups=no groupmode=1 feedback-has-witness=yes [email protected] sibling-group-b=cannotaccessgroup student-call=nopermissions MOODLE-GRADES-FEEDBACK-IDOR-WITNESS

수정 사항

validate_context / require_capability 이후에 코스와 대상 사용자를 로드한 다음, groups_user_groups_visible($course, $userid)가 참이고 대상이 등록되어 있지 않으면 거부합니다. MDL-88667 이후의 gradereport_user 및 core_grades_get_gradable_users와 동일한 형태입니다.

참고 자료

  • github.com/moodle/moodle 태그 v5.2.3
  • get_feedback.php
  • 형제 서비스는 이미 다른 그룹을 거부함: get_gradable_users.php
  • 인근에서 패치됨(이 서비스는 아님): MSA-26-0016 / MDL-88667
  • 동일 핀: moodle-blackboard-img · moodle-enrol-database-sqli · moodle-grades-gradeitems
  • CWE-863

라이선스

GNU Affero GPL v3.0. LICENSE를 참조하세요. 루프백 랩 전용입니다. 보증은 제공되지 않습니다.

도구 다운로드