
Joomla 6.1.3 - उच्च - रिमोट - ACL - मेनू आइटम API अवशेष
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · 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 केवल com_menus पर core.manage के साथ 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। UI allowEdit main के लिए false लौटाता है |
| कर्मचारियों को नकली लॉगिन पर भेजें या वास्तविक एडमिन आइटम छिपाएँ | एडमिन मेनू पर प्रकाशित URL आइटम | अखंडता / रेकॉन | राइट से अनुमानित। लैब ने https://example.invalid/ लगाया |
| उन मेनू पर आइटम संपादित या हटाएँ जो उनके नहीं हैं | API PATCH / DELETE वही अनुपस्थित allow* उपयोग करता है | अखंडता | अनुमानित। लैब ने क्रिएट का परीक्षण किया |
| एक्सटेंशन इंस्टॉल करें या सुपर यूज़र बनें | अन्य ACL चाहिए | लागू नहीं | बंद। प्रबंधक सुपर यूज़र नहीं है |
इस पिन पर बंद: उसी उपयोगकर्ता के लिए 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);
API आइटम कंट्रोलर allowAdd / allowEdit को ओवरराइड नहीं करता। डिफ़ॉल्ट ApiController केवल कंपोनेंट core.manage के साथ core.create / core.edit की जाँच करता है। मॉडल canSave पथ केवल कंपोनेंट core.edit की जाँच करता है। बैच कॉपी/मूव पहले से ही मेनू एसेट की जाँच करते हैं।
पहले से दर्ज गलत रास्ते: UI HTTP 200 को अनुमति के रूप में पढ़ना (बॉडी "not permitted" है); UI में com_menus पर core.manage को पर्याप्त मानना (UI अभी भी com_menus.menu.{id} पर आधारित है); core.login.api के बिना स्टॉक Manager। नाटक: रिवर्स शेल। ओरेकल staffmenu और main पर API 200 के साथ B पर UI इनकार है।
उसी पिन के अवशेष: 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। केवल लूपबैक लैब। कोई वारंटी नहीं।