
Joomla 6.1.3 - उच्च - रिमोट - ACL - मेनू आइटम API अवशेष
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · joomla-menu-items-api
राइट-अप: https://abraxaslabs.tech/research/joomla-menu-items-api
वर्ग: विशेषाधिकार अवशेष पहुँच: रिमोट
Joomla CMS 6.1.3 (0f2d4de) - Open Source Matters
मेनू आइटम के लिए प्रशासक UI com_menus.menu.{id} की जाँच करता है और menutype == main को अस्वीकार करता है। api/components/com_menus/src/Controller/ItemsController.php में कोई allowAdd / allowEdit नहीं है, इसलिए ApiController केवल core.manage के साथ-साथ com_menus पर core.create / core.edit माँगता है।
एक टोकन उपयोगकर्ता जो एक मेनू का प्रबंधन कर सकता है, वह /api/index.php/v1/menus/administrator/items पर POST करके उस मेनू पर आइटम बना सकता है जिस पर UI में उसे अनुमति नहीं है, जिसमें संरक्षित प्रशासक main मेनू भी शामिल है।
| ID | अभी तक कोई CVE नहीं |
| वर्ग | विशेषाधिकार अवशेष / प्राधिकरण बायपास |
| पहुँच | रिमोट (core.login.api वाला API टोकन) |
| CWE | CWE-863 |
| CVSS | उच्च: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N |
| उत्पाद | Joomla CMS |
| प्रभावित | 6.1.3 (0f2d4de4729eb951e0878fec98c7990da07915b2) |
| प्रमाणीकरण | core.login.api + core.manage + com_menus पर core.create/core.edit वाला रिमोट API उपयोगकर्ता, सुपर यूज़र नहीं। डिफ़ॉल्ट core.login.api केवल सुपर यूज़र के लिए है। |
| लाइसेंस | GNU Affero GPL v3.0 |
| लैब | केवल 127.0.0.1 |
टोकन उपयोगकर्ता जो केवल मेनू A पर आइटम बना सकता है। वे अभी भी एक्सटेंशन इंस्टॉल नहीं कर सकते जब तक कि उनके पास पहले से वह अनुमति न हो। इस अवशेष से वे सुपर यूज़र नहीं बनते।
| विशेषाधिकार | विधि / पथ | प्रकार | लैब-प्रमाणित या अनुमानित |
|---|---|---|---|
| उस मेनू पर आइटम बनाना जिस पर उन्हें अनुमति नहीं है | B के menutype के साथ POST /api/index.php/v1/menus/administrator/items | अखंडता | लैब-प्रमाणित। HTTP 200, staffmenu पर आइटम 102, शीर्षक poc-JOOMLA-MENU-ITEMS-API-WITNESS |
संरक्षित प्रशासक main मेनू पर URL रखना | menutype=main के साथ वही POST | अखंडता | लैब-प्रमाणित HTTP 200। main के लिए UI allowEdit false लौटाता है |
| कर्मचारियों को नकली लॉगिन पर भेजना या वास्तविक एडमिन आइटम छिपाना | एडमिन मेनू पर प्रकाशित URL आइटम | अखंडता / रेकॉन | राइट से अनुमानित। लैब ने https://example.invalid/ रखा |
| उन मेनू पर आइटम संपादित या हटाना जिनके वे स्वामी नहीं हैं | API PATCH / DELETE वही अनुपस्थित allow* का उपयोग करता है | अखंडता | अनुमानित। लैब ने create का परीक्षण किया |
| एक्सटेंशन इंस्टॉल करना या सुपर यूज़र बनना | अन्य ACL की आवश्यकता है | लागू नहीं | बंद। Manager सुपर यूज़र नहीं है |
इस पिन पर बंद: उसी उपयोगकर्ता के लिए staffmenu पर UI add/save (not permitted)। labmenu पर UI add अभी भी काम करता है। 6.1.1 से Groups API core.admin गेट अछूता है।
2026 JSST लहर के बाद मैंने 6.1.3 को पिन किया। प्रशासक ItemController पहले से ही सही काम करता है:
return $user->authorise('core.create', 'com_menus.menu.' . $menutypeID);
if ($item->menutype == 'main') {
return false;
}
return $user->authorise('core.edit', 'com_menus.menu.' . (int) $menutypeID);
The API items controller allowAdd / allowEdit को override नहीं करता है। डिफ़ॉल्ट ApiController केवल component core.manage के साथ core.create / core.edit की जाँच करता है। model का canSave पथ केवल component core.edit की जाँच करता है। Batch copy/move पहले से ही menu asset की जाँच करता है।
पहले से दर्ज गलत मोड़: UI HTTP 200 को allow के रूप में पढ़ना (body "not permitted" है); UI में com_menus पर core.manage को पर्याप्त मानना (UI अभी भी com_menus.menu.{id} पर निर्भर है); core.login.api के बिना एक स्टॉक Manager। नाटक: एक reverse shell। Oracle staffmenu और main पर API 200 तथा B पर UI denial है।
वही pin अवशेष: levels API, media override, articles catid।
python3 joomla-menu-items-api-Abraxas-Labs.py
या
cd lab
./run.sh
केवल http://127.0.0.1:19530 को लक्षित करें। इमेज joomla:6.1.3-php8.3-apache।
SUCCESS joomla-menu-items-api api-b-http=200 item-id=102 menutype=staffmenu api-main-http=200 ui-add-b=200 ui-save-b=200 JOOMLA-MENU-ITEMS-API-WITNESS
ui-add-b / ui-save-b HTTP 200 हैं; B का इनकार UI का "not permitted" बॉडी है, 403 स्टेटस नहीं।
ItemController::allowAdd / allowEdit (और delete) को API कंट्रोलर पर कॉपी करें, जिसमें main ब्लॉक भी शामिल है। canSave में मेनू-प्रकार एसेट को उसी तरह जाँचें।
0f2d4de4729eb951e0878fec98c7990da07915b2)ItemsController.phpItemController.phpGNU Affero GPL v3.0. देखें LICENSE। केवल लूपबैक लैब। कोई वारंटी नहीं।