
Joomla 6.1.3 - उच्च - रिमोट - ACL - GET /api/v1/users/levels व्यू लेवल्स लीक करता है
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · joomla-levels-api
राइट-अप: https://abraxaslabs.tech/research/joomla-levels-api
वर्ग: विशेषाधिकार अवशेष पहुँच: रिमोट
Joomla CMS 6.1.3 (0f2d4de) - Open Source Matters
व्यवस्थापक उपयोगकर्ता -> व्यूइंग एक्सेस लेवल के लिए com_users पर core.admin आवश्यक है (LevelController::allowSave और delete)। Groups वेबसर्विस पहले से ही ऐसा ही करती है (GroupsController, 6.1.1)। LevelsController में कोई allowAdd, allowEdit, या delete ओवरराइड नहीं है, इसलिए ApiController core.manage के साथ-साथ core.create को भी अनुमति दे देता है।
Manager-वर्ग का API टोकन, जिसे core.admin के बिना core.login.api दिया गया है, ऐसे व्यूइंग एक्सेस लेवल बना सकता है जिन्हें UI मना करता है।
| ID | अभी तक कोई CVE नहीं |
| वर्ग | विशेषाधिकार अवशेष / प्राधिकरण बायपास |
| पहुँच | रिमोट (core.login.api वाला API टोकन) |
| CWE | CWE-863 |
| CVSS | मध्यम: 6.1 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:N |
| उत्पाद | Joomla CMS |
| प्रभावित | 6.1.3 (0f2d4de4729eb951e0878fec98c7990da07915b2) |
| प्रमाणीकरण | Manager (समूह 6) के लिए API टोकन, जिसमें core.login.api और com_users manage/create/edit है। core.admin नहीं। डिफ़ॉल्ट core.login.api केवल Super User के लिए है। |
| लाइसेंस | GNU Affero GPL v3.0 |
| लैब | केवल 127.0.0.1 |
गैर-Super-User API टोकन का उपयोग करके कौन से समूह कौन से पेज देखते हैं इसे बदलें। केवल इस अवशेष से वे Super User नहीं बनते। यह सामग्री-दृश्यता नियंत्रण है, साइट पर कब्ज़ा नहीं।
| विशेषाधिकार | विधि / पथ | प्रकार | लैब-प्रमाणित या अनुमानित |
|---|---|---|---|
| व्यूइंग एक्सेस लेवल बनाएँ | POST /api/index.php/v1/users/levels JSON title, rules (समूह आईडी) | अखंडता | लैब-प्रमाणित। HTTP 200, #__viewlevels id=7, शीर्षक poc-level-JOOMLA-LEVELS-API-WITNESS |
| मौजूदा लेवल संपादित करें (समूह सूची / शीर्षक) | PATCH /api/index.php/v1/users/levels/{id} | अखंडता | अनुमानित। वही कंट्रोलर, कोई allowEdit नहीं। लैब ने केवल निर्माण किया। |
| लेवल हटाएँ | DELETE /api/index.php/v1/users/levels/{id} | अखंडता / ACL पंक्तियों की उपलब्धता | अनुमानित। वही अनुपस्थित ओवरराइड। लैब ने DELETE नहीं किया। |
| केवल-सदस्यों वाला लेख, मॉड्यूल, या मेनू आइटम उजागर करें | नया या पैच किया गया लेवल जिसके rules में Public / Guest / Registered शामिल हैं | रेकॉन (सामग्री दृश्यता) | #__viewlevels.rules से अनुमानित। लैब ने पंक्ति डाली; इसने किसी लाइव लेख को पुनः-ACL नहीं किया। |
| Registered से कोई पेज छिपाएँ, या हमलावर के समूह को Special लेवल में जोड़ें | वही PATCH / create | अखंडता | अनुमानित। वही स्टोर। |
| API से उपयोगकर्ता समूहों को बदलें | POST /api/index.php/v1/users/groups | लागू नहीं | लैब-प्रमाणित बंद। HTTP 403 (GroupsController core.admin) |
| व्यवस्थापक में Users -> Viewing Access Levels खोलें | GET /administrator/index.php?option=com_users&view=levels | लागू नहीं | लैब-प्रमाणित बंद। HTTP 403 |
| UI से लेवल सहेजें | POST ... task=level.save | लागू नहीं | लैब-प्रमाणित बंद। HTTP 403 (LevelController::allowSave के लिए core.admin आवश्यक है) |
स्टॉक Manager (बिना core.login.api) के साथ API हिट करें | Bearer टोकन / X-Joomla-Token | लागू नहीं | अनुमानित रूप से बंद। डिफ़ॉल्ट core.login.api केवल Super User (समूह 8) के लिए है। यह लैब पहले इसे समूह 6 को देता है। |
| Super User / इंस्टॉलर RCE | लागू नहीं | लागू नहीं | बंद। Manager, Manager ही रहता है। |
मैंने 2026-07/08 JSST लहर के बाद joomla/joomla-cms 6.1.3 को पिन किया। Groups API को पहले से ही core.admin की आवश्यकता होती है। View levels अभी भी ApiController (core.manage के साथ-साथ core.create / core.edit / core.delete) के माध्यम से गिरते हैं। LevelsController पर एकमात्र अतिरिक्त लॉजिक rules का PATCH JSON डिकोड है।
Groups सहोदर को ठीक किया गया:
public function allowAdd($data = [])
{
return $this->app->getIdentity()->authorise('core.admin', $this->option);
}
प्रशासक UI:
protected function allowSave($data, $key = 'id')
{
return $this->app->getIdentity()->authorise('core.admin', $this->option)
&& parent::allowSave($data, $key);
}
गलत मोड़ जो पहले ही दर्ज हो चुके हैं: Groups API को अभी भी खुला मानना (यह 403 है); पहले core.login.api दिए बिना स्टॉक Manager के रूप में API को हिट करना (डिफ़ॉल्ट केवल Super User है, वही सेटअप जो CVE-2026-71574 / 72531 / 48904 में है); UI 403 को पूरी कहानी मान लेना (बचा हुआ हिस्सा API है)। थिएटर: एक रिवर्स शेल। ओरेकल है API 200 प्लस Groups 403 प्लस UI 403।
वही पिन अवशेष: menu items API, media override, articles catid।
python3 joomla-levels-api-Abraxas-Labs.py
या
cd lab
./run.sh
केवल http://127.0.0.1:19520 को लक्षित करें। इमेज joomla:6.1.3-php8.3-apache के साथ mariadb:11.4।
SUCCESS joomla-levels-api api-http=200 level-id=7 groups-api=403 ui-view=403 ui-save=403 JOOMLA-LEVELS-API-WITNESS
GroupsController के core.admin allowAdd / allowEdit / delete को LevelsController पर कॉपी करें। व्यवस्थापक UI गेट बनाए रखें।
0f2d4de4729eb951e0878fec98c7990da07915b2)LevelsController.phpcore.admin (6.1.1) · CVE-2026-71574GNU Affero GPL v3.0. देखें LICENSE। केवल लूपबैक लैब। कोई वारंटी नहीं।