Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
moodle-grades-feedback-idor — Moodle 5.2.3 - 高 - リモート - IDOR - core_grades_get_feedback が separate-groups チェックをスキップする | Kitploit
ツール/GitHubGitHub/abraxas/moodle-grades-feedback-idor
脆弱性分析エクスプロイトウェブアプリケーション悪用情報収集セキュリティ仮想化ウェブセキュリティペネトレーションテストラボと実践
GitHub
abraxas/moodle-grades-feedback-idor

moodle-grades-feedback-idor

Moodle 5.2.3 - 高 - リモート - IDOR - core_grades_get_feedback が separate-groups チェックをスキップする

リポジトリを見る
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 し、そのグループのフィードバックを読み取ります。

IDCVE 未割当
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}n/aラボ実証済みでクローズ。cannotaccessgroup
学生が同じフィードバックサービスを呼び出すstudent ロール、同じ引数n/aラボ実証済みでクローズ。nopermissions
同一グループのフィードバック(Group A の学生)Student Alpha に対する教師の呼び出し偵察(意図された動作)ラボ実証済みで許可。HTTP 200、error=false
PHP RCE / OS LPE / 成績の書き込みn/an/aクローズ。この残存問題はフィードバックとプロファイルフィールドの読み取りである

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)。リバースシェル。見せかけ。

ラボ

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 のみです。プロジェクト 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 を参照してください。ループバックラボ専用。保証はありません。

ツールをダウンロード