
Joomla 6.1.3 - उच्च - रिमोट - ACL - GET /api/v1/users/levels व्यू लेवल्स लीक करता है
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · joomla-levels-api
वर्ग: अधिकार शेष पहुँच: रिमोट
Joomla CMS 6.1.3 (0f2d4de) - ओपन सोर्स मैटर्स
प्रशासक उपयोगकर्ता -> दृश्यता पहुँच स्तर देखने के लिए com_users पर core.admin की आवश्यकता होती है (LevelController::allowSave और हटाने के लिए)। ग्रुप्स वेबसर्विस पहले से ही वही करता है (GroupsController, 6.1.1)। LevelsController में allowAdd, allowEdit, या delete ओवरराइड नहीं है, इसलिए ApiController core.manage और core.create को पास होने देता है।
एक मैनेजर-क्लास API टोकन, जिसमें core.admin के बिना core.login.api दिया गया है, वह दृश्यता पहुँच स्तर बना सकता है जिसे UI प्रतिबंधित करता है।
| पहचान | अभी तक कोई CVE नहीं |
|---|---|
| वर्ग | अधिकार शेष / प्राधिकरण बायपास |
| पहुँच | रिमोट (API टोकन के साथ core.login.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) |
| प्रमाणीकरण | मैनेजर (ग्रुप 6) के लिए API टोकन, जिसमें core.login.api और com_users manage/create/edit हैं। core.admin नहीं है। डिफ़ॉल्ट core.login.api केवल सुपर यूज़र के लिए होता है। |
| लाइसेंस | GNU Affero GPL v3.0 |
| लेब | केवल 127.0.0.1 |
गैर-सुपर-यूज़र API टोकन का उपयोग करके कौन से ग्रुप किन पेजों को देखते हैं, इसे बदलें। यह शेष अधिकार अकेले उन्हें सुपर यूज़र नहीं बनाता। यह सामग्री दृश्यता नियंत्रण है, साइट कब्जा नहीं।
| अधिकार | विधि / पथ | प्रकार | लेब द्वारा प्रमाणित या अनुमानित |
|---|---|---|---|
| दृश्यता पहुँच स्तर बनाना | POST /api/index.php/v1/users/levels JSON title, rules (ग्रुप आईडी) | अखंडता | लेब द्वारा प्रमाणित। HTTP 200, #__viewlevels id=7, title 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 से एक पेज छिपाएं, या हमलावर के ग्रुप को विशेष स्तर में जोड़ें | समान PATCH / बनाना | अखंडता | अनुमानित। समान स्टोर। |
| API से उपयोगकर्ता ग्रुप बदलें | POST /api/index.php/v1/users/groups | n/a | लेब द्वारा प्रमाणित बंद। HTTP 403 (GroupsController core.admin) |
| प्रशासक में Users -> Viewing Access Levels खोलें | GET /administrator/index.php?option=com_users&view=levels | n/a | लेब द्वारा प्रमाणित बंद। HTTP 403 |
| UI से स्तर सहेजें | POST ... task=level.save | n/a | लेब द्वारा प्रमाणित बंद। HTTP 403 (LevelController::allowSave को core.admin की आवश्यकता है) |
डिफ़ॉल्ट मैनेजर (बिना core.login.api) के साथ API पर कॉल करें | Bearer token / X-Joomla-Token | n/a | बंद अनुमानित। डिफ़ॉल्ट core.login.api केवल सुपर यूज़र (ग्रुप 8) के लिए होता है। यह लेब पहले इसे ग्रुप 6 को देता है। |
| सुपर यूज़र / इंस्टॉलर RCE | n/a | n/a | बंद। मैनेजर मैनेजर ही रहता है। |
मैंने 2026-07/08 JSST वेव के बाद joomla/joomla-cms 6.1.3 को पिनिंग किया। Groups API को पहले से core.admin की आवश्यकता है। View levels अभी भी ApiController से होकर गुजरते हैं (core.manage plus 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 देने के बिना डिफ़ॉल्ट मैनेजर के रूप में API पर कॉल करना (डिफ़ॉल्ट केवल सुपर यूज़र के लिए है, CVE-2026-71574 / 72531 / 48904 के समान सेटअप); UI 403 को पूरी कहानी के रूप में पढ़ना (शेष अधिकार API है)। थिएटर: एक रिवर्स शेल। ऑरेकल है API 200 plus Groups 403 plus 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 plus 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 देखें। केवल लूपबैक लेब। कोई वारंटी नहीं।