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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
joomla-articles-catid — Joomla 6.1.3 - उच्च - रिमोट - ACL - POST /api/v1/content/articles प्रति-श्रेणी ACL की अनदेखी करता है | Kitploit
उपकरण/GitHubGitHub/abraxas/joomla-articles-catid
प्रमाणीकरण और प्राधिकरणभेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणवेब सुरक्षापेनिट्रेशन टेस्टिंगAPI सुरक्षालैब और अभ्यास
GitHubabraxas/joomla-articles-catid

joomla-articles-catid

Joomla 6.1.3 - उच्च - रिमोट - ACL - POST /api/v1/content/articles प्रति-श्रेणी ACL की अनदेखी करता है

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

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

सभी देखें →

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

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

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

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

Abraxas Labs - joomla-articles-catid

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  joomla-articles-catid

राइट-अप: https://abraxaslabs.tech/research/joomla-articles-catid

joomla-articles-catid

वर्ग: विशेषाधिकार अवशेष पहुँच: रिमोट

Joomla CMS 6.1.3 (0f2d4de) - Open Source Matters

व्यवस्थापक ArticleController::allowAdd com_content.category.{catid} की जाँच करता है। api/components/com_content/src/Controller/ArticlesController.php में कोई allowAdd नहीं है। इसके बाद ApiController::add() बिना किसी डेटा के allowAdd() को कॉल करता है, इसलिए JSON catid कभी जाँच में प्रवेश नहीं करता। आधार allowAdd तब सत्य होता है जब उपयोगकर्ता किसी भी श्रेणी में बना सकता है।

एक Manager-वर्ग का API उपयोगकर्ता, जिसे core.login.api और एक श्रेणी पर बनाने की अनुमति दी गई है, एक ऐसी श्रेणी में लेख POST कर सकता है जिसमें उन्हें UI में मना किया गया है।

IDअभी तक कोई CVE नहीं
वर्गविशेषाधिकार अवशेष / प्राधिकरण बायपास
पहुँचरिमोट (core.login.api के साथ API टोकन)
CWECWE-863
CVSSमध्यम: 6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
उत्पादJoomla CMS
प्रभावित6.1.3 (0f2d4de4729eb951e0878fec98c7990da07915b2), POST /api/index.php/v1/content/articles
प्रमाणीकरणManager (समूह 6) के लिए API टोकन, जिसमें core.login.api, com_content core.manage, और केवल एक श्रेणी पर core.create हो। कोई Super User नहीं। डिफ़ॉल्ट core.login.api केवल Super User के लिए है।
लाइसेंसGNU Affero GPL v3.0
लैबकेवल 127.0.0.1

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

एक गैर-Super-User API टोकन का उपयोग करें जो एक श्रेणी में बना सकता है, उन श्रेणियों में प्रकाशित करने के लिए जिनसे उन्हें प्रतिबंधित किया गया है। इस अवशेष से वे Super User नहीं बनते। यह अनधिकृत प्रकाशन है, साइट पर कब्ज़ा नहीं और छिपे हुए लेखों का पठन नहीं।

विशेषाधिकारविधि / पथप्रकारप्रयोगशाला-प्रमाणित या अनुमानित
उस श्रेणी में एक लेख बनाएं जिसमें उन्हें मना किया गया हैPOST /api/index.php/v1/content/articles JSON catid of Bintegrityप्रयोगशाला-प्रमाणित। HTTP 200, #__content id=1, catid=9 (Press), शीर्षक poc-art-JOOMLA-ARTICLES-CATID-WITNESS
केवल अनुमत Drafts होने पर भी Official notices / Press में प्रकाशित प्रति रखेंवही POST, state=1integrityप्रयोगशाला-प्रमाणित, मना की गई Press में निर्माण। किसी भी अन्य श्रेणी परिसंपत्ति के लिए अनुमानित जिसमें core.create मना है
API के माध्यम से किसी मौजूदा लेख को संपादित करेंPATCH /api/index.php/v1/content/articles/{id}n/aइस Manager के लिए बंद अनुमानित। आधार allowEdit को घटक core.edit चाहिए; प्रयोगशाला com_content नियम Author (4) को core.edit देते हैं, Manager (6) को नहीं। प्रयोगशाला ने PATCH नहीं किया
API के माध्यम से किसी लेख को हटाएंDELETE /api/index.php/v1/content/articles/{id}n/aबंद अनुमानित। आधार allowDelete को घटक core.delete चाहिए। प्रयोगशाला ने DELETE नहीं किया
administrator से अनुमत श्रेणी A में एक लेख सहेजेंPOST ... task=article.save jform[catid]=Aintendedप्रयोगशाला-प्रमाणित इच्छानुसार खुला। HTTP 200, मना नहीं किया गया
administrator से मना की गई श्रेणी B में एक लेख सहेजेंवही task, jform[catid]=Bn/aप्रयोगशाला-प्रमाणित बंद। HTTP 200 "not permitted" / create-not-permitted के साथ (UI allowAdd on com_content.category.B)
स्टॉक Manager (बिना core.login.api) के साथ API हिट करेंBearer token / X-Joomla-Tokenn/aबंद अनुमानित। डिफ़ॉल्ट core.login.api केवल Super User (समूह 8) है। यह प्रयोगशाला इसे पहले समूह 6 को देती है
contacts / banners / newsfeeds पर वही अंतरालPOST /api/index.php/v1/contacts (और सहोदर) विदेशी catid के साथintegrityअनुमानित। उन API controllers में भी allowAdd का अभाव है। प्रयोगशाला ने उन्हें नहीं चलाया
Super User / installer RCEn/an/aबंद। Manager Manager ही रहता है

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

मैंने 2026-07/08 JSST लहर के बाद 6.1.3 को पिन किया। Groups API को पहले से ही core.admin चाहिए। Media webservice को override पर पहले से ही core.edit चाहिए। Articles API अभी भी ApiController के माध्यम से गिरता है और हर catid के लिए "किसी भी श्रेणी में बनाएं" को पर्याप्त मानता है।

public function add()
{
    if (!$this->allowAdd()) {
        throw new NotAllowed('JLIB_APPLICATION_ERROR_CREATE_RECORD_NOT_PERMITTED', 403);
    }
    $recordId = $this->save();
    $this->displayItem($recordId);
}

आधार जाँच:

protected function allowAdd($data = [])
{
    $user = $this->app->getIdentity();

    if (!$user->authorise('core.manage', $this->option)) {
        return false;
    }

    return $user->authorise('core.create', $this->option)
        || \count($user->getAuthorisedCategories($this->option, 'core.create'));
}

Administrator UI पहले से ही catid पर आधारित है:

protected function allowAdd($data = [])
{
    $categoryId = ArrayHelper::getValue(
        $data,
        'catid',
        $this->input->getInt('filter_category_id'),
        'int'
    );

    if ($categoryId) {
        return $this->app->getIdentity()->authorise(
            'core.create',
            'com_content.category.' . $categoryId
        );
    }

    return parent::allowAdd();
}

गलत मोड़ जो पहले ही दर्ज हो चुके हैं: UI HTTP 200 को allow के रूप में पढ़ना (B का denial "not permitted" body है); component core.create को छेद मानना (lab Manager में यह नहीं है; base getAuthorisedCategories count के लिए एक category allow ही काफ़ी है); एक stock Manager जिसमें core.login.api नहीं है। Theatre: एक reverse shell। Oracle है API 200 into Press plus UI allow on Drafts plus UI deny on Press।

वही pin leftovers: levels API, menu items API, media override।

Lab

python3 joomla-articles-catid-Abraxas-Labs.py

or

cd lab
./run.sh

केवल http://127.0.0.1:19550 को लक्षित करें। इमेज joomla:6.1.3-php8.3-apache के साथ mariadb:11.4।

SUCCESS joomla-articles-catid api-http=200 article-id=1 catid=9 cat-a=8 cat-b=9 ui-a=200 ui-b=200 JOOMLA-ARTICLES-CATID-WITNESS

article-id अगला #__content autoincrement है (स्वच्छ 6.1.3 इंस्टॉल पर 1)। ui-a / ui-b HTTP 200 हैं; B का denial UI "not permitted" body है, 403 स्थिति नहीं।

समाधान

api/components/com_content/src/Controller/ArticlesController.php पर allowAdd (और allowEdit) को उसी तरह override करें जैसे administrator ArticleController में है: com_content.category.{catid} पर core.create जाँचें। request JSON को ApiController::add() में पास करें ताकि catid वास्तव में उस जाँच तक पहुँचे। यदि contacts, banners और newsfeeds के controllers डिफ़ॉल्ट allowAdd पर ही रहते हैं तो उन पर भी वही पैटर्न लागू करें।

संदर्भ

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