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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
kibana-prototype-pollusion — Kibana प्रोटोटाइप प्रदूषण RCE (CVE-2019-7609) के लिए PoC और विश्लेषण। | Kitploit
उपकरण/GitHubGitHub/aleister1102/kibana-prototype-pollusion
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब एप्लिकेशन शोषणपेपर और शोधलर्निंग और शिक्षा
GitHubaleister1102/kibana-prototype-pollusion

kibana-prototype-pollusion

Kibana प्रोटोटाइप प्रदूषण RCE (CVE-2019-7609) के लिए PoC और विश्लेषण।

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

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

सभी देखें →

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

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

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

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

CVE-2019-7609

किबाना संस्करण 5.6.15 और 6.6.1 से पहले के संस्करणों में टिमेलियन विज़ुअलाइज़र में एक मनमाना कोड निष्पादन दोष है। टिमेलियन एप्लिकेशन तक पहुंच वाला एक हमलावर एक अनुरोध भेज सकता है जो जावास्क्रिप्ट कोड को निष्पादित करने का प्रयास करेगा। इससे संभावित रूप से हमलावर होस्ट सिस्टम पर किबाना प्रक्रिया की अनुमतियों के साथ मनमाने आदेशों को निष्पादित कर सकता है।

CVSS:

cvss

ब्लॉग: https://research.securitum.com/prototype-pollution-rce-kibana-cve-2019-7609/

पेलोड: https://github.com/mpgn/CVE-2019-7609

लक्ष्य

सेटअप:

  • Docker: https://www.elastic.co/guide/en/kibana/8.14/docker.html
  • Docker Compose

उपयोग:

  • Kibana: https://www.elastic.co/guide/en/kibana/current/development-getting-started.html
  • Timelion: https://www.elastic.co/guide/en/kibana/5.4/timelion.html

विश्लेषण

टिमेलियन

शीट को पार्स करने के बाद:

alt text

पूर्व-प्रसंस्करण शीट के बाद, हमारे पास एक queries ऑब्जेक्ट है:

alt text

फिर, हम queries सरणी (जो values विधि का उपयोग करके एक सरणी में परिवर्तित हो जाती है) पर लूप करते हैं और फ़ंक्शन को लागू करने के लिए invoke में query.function और query.arguments पास करते हैं।

invoke फ़ंक्शन में, पहले हम फ़ंक्शन की परिभाषा उसके नाम (query.function) के आधार पर प्राप्त करते हैं:

alt text

इस फ़ंक्शन परिभाषा में तीन प्रकार के फ़ंक्शन शामिल हैं: fn, originalFn और timelionFn। फिर, यह args (जो query.arguments है) पर लूप करता है और तर्कों को हल करता है:

alt text

इस मामले में, args में तर्क एक ऑब्जेक्ट है जिसका प्रकार 'literal' है, इसलिए यह केवल शाब्दिक मान लौटाता है:

alt text

वास्तव में, मान एक प्रॉमिस में लिपटा होता है।

alt text

अनुक्रमित तर्क एक byName ऑब्जेक्ट वाला तर्क है जिसमें q सरणी होती है:

alt text

उसके बाद, invoke फ़ंक्शन सभी अनुक्रमित तर्कों के साथ functionDef.fn को कॉल करेगा, जो Timelion वर्ग का एक फ़ंक्शन है:

alt text

fn फ़ंक्शन originalFn को कॉल करेगा, जो config.fn से आता है जहाँ config tlConfig है। और वह फ़ंक्शन Datasource extends Timelion वर्ग का fn है:

alt text

जैसा कि हम देख सकते हैं, यह एक अन्य originalFn को कॉल करता है जिसका नाम esFn है जो एक seriesList ऑब्जेक्ट लौटाता है:

alt text

उस फ़ंक्शन का उपयोग "एक elasticsearch इंस्टेंस से डेटा खींचने" के लिए callWithRequest फ़ंक्शन को कॉल करके किया जाता है।

seriesList Datasource.fn में इस प्रकार दिखता है:

alt text

और Timelion.fn में यह इस प्रकार दिखता है:

alt text

पूर्व-प्रसंस्करण शीट के बाद, श्रृंखला सूची इस प्रकार है:

alt text

और कोड श्रृंखला सूची को हल करने के लिए resolveChainList को कॉल करेगा:

alt text

प्रत्येक श्रृंखला को एक प्रॉमिस में मैप किया जाएगा जो एक फ़ंक्शन से लौटाया जाता है जो 'first' को fnName और श्रृंखला को args के रूप में invoke करता है।

फ़ंक्शन परिभाषा फिर से नाम से प्राप्त की जाती है:

alt text

इस बार, resolveArguments args को एक सरणी के रूप में प्राप्त करता है और यह प्रत्येक तर्क को हल करने के लिए resolveArguments को पुनरावर्ती रूप से कॉल करेगा। लेकिन, हमारे पास सूचकांक 0 के साथ केवल एक तर्क है। और वह तर्क एक ऑब्जेक्ट है जिसका type == chain है।

इसलिए, स्विच केस में, यह invokeChain फ़ंक्शन को कॉल करेगा और उसमें श्रृंखला ऑब्जेक्ट पास करेगा:

alt text

इनवोक चेन के अंदर, यह chain सरणी को shift करेगा। shift फ़ंक्शन हटाए गए तत्व को लौटाएगा, इसलिए link es ऑब्जेक्ट होगा:

alt text

क्योंकि es का प्रकार 'chain' नहीं है (यह 'function' है) और !result सत्य है, कोड invoke फ़ंक्शन को 'first' के रूप में fnName और es ऑब्जेक्ट को args के रूप में कॉल करता है:

इस बार, प्रक्रिया ऊपर जैसी ही है, इसलिए invokeChain के कॉल पर छोड़ें जहाँ link props ऑब्जेक्ट है:

alt text

फिर से, कोड invoke फ़ंक्शन को 'first' के रूप में fnName और props ऑब्जेक्ट को args के रूप में कॉल करता है:

alt text

props का originalFn अब firstFn है, es की तरह fn नहीं है, और केवल एक तर्क स्वीकार करता है:

alt text

वह मूल फ़ंक्शन अंततः कमजोर unflatten फ़ंक्शन को कॉल करेगा। वास्तव में, यह पहले Timelion के fn को कॉल करेगा। फिर fn props के originalFn को कॉल करेगा:

alt text

props का firstFn args के byName ऑब्जेक्ट में inputSeries और global गुणों को छोड़ देगा:

alt text

इसलिए unflatten में पास किया गया data होगा:

{
    label.__proto__.env.AAA: "a"
}

प्रमाण:

alt text

अनफ़्लैटन

props(label.__proto__.env.AAA="a") का उपयोग करें। data इस प्रकार दिखेगा:

alt text

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