Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
moodle-enrol-database-sqli — Moodle 5.2.3 - उच्च - रिमोट - SQLi - enrol_database SQL में course idnumber को संयोजित करता है | Kitploit
उपकरण/GitHubGitHub/abraxas/moodle-enrol-database-sqli
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणवेब सुरक्षापेनिट्रेशन टेस्टिंगडेटाबेस सुरक्षालैब और अभ्यास
GitHubabraxas/moodle-enrol-database-sqli

moodle-enrol-database-sqli

Moodle 5.2.3 - उच्च - रिमोट - SQLi - enrol_database SQL में course idnumber को संयोजित करता है

रिपॉजिटरी देखें
93 दिन पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

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

Class: SQLi Reach: Remote

enrol_database::db_get_sql अभी भी slashes और concatenates करता है। MSA-26-0005 / MDL-88138 ने auth_db को Execute($sql, [$value]) के रूप में parameterized किया। इस plugin ने वह shape copy नहीं किया। settings में defaults: dbsybasequoting=0, localcoursefield=idnumber। sink external enrolment database है। Moodle core $DB इस path पर नहीं है।

enrol_database enabled वाली site पर एक editing teacher course idnumber set करता है। Cron इसे interpolate करता है। enrol DB से extra rows वापस आती हैं।

IDअभी कोई CVE नहीं
CWECWE-89
CVSSHigh: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
ProductMoodle
Affected5.2.3 tag v5.2.3 (344232c15336c71b80f9aca8359ce0e0a9f3d116)। Plugin enrol_database on होना चाहिए।
Authediting teacher (course idnumber, default local map)
LicenseGNU Affero GPL v3.0
Labकेवल 127.0.0.1

हमलावर क्या कर सकता है

enrol_database enabled वाली site पर एक editing teacher course idnumber set करके external enrolment database पर SQL inject करता है। फिर cron sync_enrolments वह SQL चलाता है।

PrivilegeMethod / sinkRecon / integrity / availabilityLab-proven या inferred
external enrol SELECT में SQL fragment splice करनाCron sync_enrolments -> db_get_sql($table, array($coursefield=>$course->mapping), ...) -> $extdb->Execute($sql)query string की integrityLab-proven। Concat SQL है WHERE courseid = 'LABCOURSE\'' OR 1=1 -- '
उस external DB पर अन्य courses की enrol rows पढ़नाstring close होने के बाद वही SELECTReconLab-proven। Clean: 1 row teacher-local। Inject: 2 rows जिसमें MOODLE-ENROL-DATABASE-SQLI-WITNESS शामिल है
plugin off होने पर query skip करनावही gadget, plugin=offn/aLab-proven closed। executed=false, खाली SQL, 0 rows
वही payload bound parameter के रूप में रखनाMSA-26-0005 का auth_db leftover: Execute($sql, [$value])n/aLab-proven closed। style=param ने 0 rows return किए, SQL में ? है
extra rows में named Moodle users को enrol / unenrol / role-assign करनाcron द्वारा requestedenrols apply करने के बादenrolments की integrityInferred। Lab enrol DB पर extra rows पर रुक जाता है
enrol-DB user के रूप में FILE / INTO OUTFILEवही sink यदि उस account के पास FILE हैउस DB host की integrity / availabilityInferred। प्रदर्शित नहीं। OS LPE नहीं
Student-controlled pathकेवल यदि admin localuserfield=email (या समान) map करेn/aInferred। Default path teacher idnumber है

इस leftover पर closed: Moodle core $DB; plugin disabled (कोई query नहीं); unauthenticated access; OS shell; stacked queries (यह mysqli gadget single-statement है)। enrol_database के बिना default Moodle यह bug नहीं है।

Same pin leftovers: Blackboard img file read, grades feedback IDOR, hidden grade items।

मैंने इसे कैसे खोजा

मैंने MSA-26-0042/0043 के बाद moodle/moodle v5.2.3 pin किया। MSA-26-0005 ने auth_db को placeholder से बंद किया। मैंने enrol_database खोला क्योंकि यह उसी प्रकार के external DB से बात करता है और इसमें अभी भी db_addslashes है।

dbsybasequoting default 0 है, इसलिए केवल ' double होता है। idnumber में backslash-quote MySQL string को close कर देता है।

पहले से दर्ज गलत रास्ते: Moodle core $DB को sink मानना (यह नहीं है); इसे OS LPE कहना क्योंकि FILE एक MySQL privilege के रूप में मौजूद है (प्रदर्शित नहीं, यह leftover नहीं); student email को default map मानना (admin को localuserfield बदलना पड़ता है)। एक reverse shell। नाटक।

Lab

pin builders का faithful gadget, पूरा Moodle PHP app नहीं। php:8.3-cli copied db_get_sql / db_addslashes / db_encode serve करता है। mysql:8.0 में दो enrol rows हैं।

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

या

cd lab
./run.sh

Target केवल http://127.0.0.1:19570। Compose project moodle-enrol-database-sqli। Run के बाद stack tear down हो जाता है।

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

Fix

auth_db की parameterized queries copy करें (MDL-88138)। mapped course / user value को Execute($sql, [$value]) के रूप में pass करें। db_addslashes को '$value' में concatenate न करें। एक test जोड़ें कि course idnumber में quote होने पर अन्य courses से rows return न हों।

References

  • github.com/moodle/moodle tag v5.2.3
  • lib.php (db_get_sql, db_addslashes, sync_enrolments)
  • Nearby patched (यह plugin नहीं): MSA-26-0005 / MDL-88138 auth_db
  • Same pin: moodle-blackboard-img · moodle-grades-feedback-idor · moodle-grades-gradeitems
  • CWE-89

License

GNU Affero GPL v3.0। देखें LICENSE। केवल Loopback lab। कोई warranty नहीं।

टूल डाउनलोड करें