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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2019-11581 — Atlassian Jira बिना प्रमाणीकरण टेम्पलेट इंजेक्शन | Kitploit
उपकरण/GitHubGitHub/petrusviet/cve-2019-11581
भेद्यता विश्लेषणशोषणशेलकोडवेब एप्लिकेशन शोषणलर्निंग और शिक्षापेलोड डेवलपमेंट
GitHubpetrusviet/cve-2019-11581

CVE-2019-11581

Atlassian Jira बिना प्रमाणीकरण टेम्पलेट इंजेक्शन

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

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

सभी देखें →

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

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

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

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

Atlassian Jira बिना प्रमाणीकरण template injection (CVE-2019-11581)

I) निर्माण

1. बग संस्करण

4.4.x
5.x.x
6.x.x
7.0.x
7.1.x
7.2.x
7.3.x
7.4.x
7.5.x
7.6.x before 7.6.14 (the fixed version for 7.6.x)
7.7.x
7.8.x
7.9.x
7.10.x
7.11.x
7.12.x
7.13.x before 7.13.5 (the fixed version for 7.13.x)
8.0.x before 8.0.3 (the fixed version for 8.0.x)
8.1.x before 8.1.2 (the fixed version for 8.1.x)
8.2.x before 8.2.3 (the fixed version for 8.2.x)

2. निर्माण और डिबग

  • set JVM_SUPPORT_RECOMMENDED_ARGS= का मान ./bin/setenv.bat फ़ाइल में संपादित करें (या लिनक्स के लिए ./bin/setenv.sh के समान) ताकि रिमोट डिबग चलाया जा सके।
set JVM_SUPPORT_RECOMMENDED_ARGS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
  • IDE (Intellij) में हम एक Debug Configurations बनाते हैं: Remote JVM Debug जिसमें host और port का मान localhost:5005 है और Command line aguments for remote JVM
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
  • ./bin/config.bat फ़ाइल चलाएँ (या लिनक्स के लिए config.sh फ़ाइल) और "Jira home" को अपने jira home निर्देशिका में संशोधित करें। image

  • ./bin/start-jira.bat फ़ाइल चलाएँ (या लिनक्स के लिए ./bin/start-jira.sh). अगर नहीं चलता है तो आप java version, port 8080 और 5005 की जाँच करें कि वे free हैं या नहीं!

  • हम private mode चुनते हैं। image

  • इस चरण तक, आप एक ऐसे ईमेल पते का उपयोग करें जो ईमेल प्राप्त कर सके :) image

  • कॉन्फ़िगर करें और कनेक्शन टेस्ट अच्छी तरह कर लें। image

  • http://localhost:8080/secure/admin/EditApplicationProperties!default.jspa पर हम Contact Administrators Form सुविधा सक्षम करते हैं। image

  • मैंने building के दौरान कुछ नोट्स ही लिखे हैं, आप building jira from source देख सकते हैं।

II) विश्लेषण

Advisory पढ़ने के बाद हमें पता चलता है कि यह बग ContactAdministrators और SendBulkMail में है (इसे मैं छोड़ देता हूँ क्योंकि इसके लिए प्रमाणीकरण आवश्यक है)। इसलिए मैं ContactAdministrators सुविधा का परीक्षण शुरू करता हूँ और अनुरोध पकड़ता हूँ।

image

  • मैं देखता हूँ कि अनुरोध /secure/ContactAdministrators.jspa पर जाता है, इसलिए मैं ./atlassian-jira/WEB-INF/web.xml फ़ाइल देखता हूँ कि यह अनुरोध किस क्लास में भेजा जाएगा।
    image
    image

  • इस तरह अनुरोध JiraWebworkActionDispatcher में संसाधित होगा, इसलिए मैंने इस क्लास के init और server पर breakpoint लगाया और डिबग चलाया। image

  • इस तरह प्रोग्राम server फ़ंक्शन पर रुका, थोड़ा trace करने पर प्रोग्राम ContactAdministrators.doExecute() में प्रवेश करता है। image

  • फिर send से गुजरते हुए, यहाँ प्रोग्राम सक्रिय एडमिन खातों की सूची बनाता है। image

  • फिर प्रोग्राम sendTo फ़ंक्शन से गुजरता है। यहाँ हम देखते हैं कि प्रोग्राम एक MailQueueItem बनाता है और उसे mailQueue में जोड़ता है। image

  • प्रोग्राम EmailBuilder.withSubject फ़ंक्शन को कॉल करता है। यहाँ ईमेल का subject स्ट्रिंग (हमलावर द्वारा भेजा गया) String से TemplateSources में परिवर्तित होता है और EmailBuilder के subjectTemplate पैरामीटर को सौंप दिया जाता है। image

  • renderLater फ़ंक्शन में प्रोग्राम एक EmailRenderer बनाता है और उसका उपयोग RenderingMailQueueItem बनाने के लिए करता है। image

  • यहाँ से, जब हम ContactAdministrators.sendTo फ़ंक्शन पर लौटते हैं। MailQueueItem बनाने के बाद प्रोग्राम आइटम को mailQueue में जोड़ता है और फिर Redirect के लिए doExecute फ़ंक्शन पर लौट जाता है। अगर हम इस डिबग प्रवाह का पालन करें, तो हम उस हिस्से तक नहीं पहुँच सकते जहाँ प्रोग्राम ईमेल render करता है, इसलिए template injection वाले हिस्से तक नहीं पहुँच सकते। तो ईमेल प्रोसेसिंग को ट्रैक करने के लिए मुझे क्या करना चाहिए???

  • मैंने देखा कि EmailRenderer में renderNow फ़ंक्शन है (प्रोग्राम केवल renderLater को कॉल करता है), मुझे लगा कि जब queue में ईमेल render के लिए बुलाया जाता है, तो वह भी renderNow के समान प्रवाह से गुजरेगा, इसलिए मैंने renderNow फ़ंक्शन से trace करने का निर्णय लिया। image

  • renderNow से प्रोग्राम EmailRenderer.render() को कॉल करता है। मैंने यहाँ breakpoint लगाया और फिर से अनुरोध किया कि प्रोग्राम वास्तव में यहाँ तक चलता है या नहीं। image

  • सौभाग्य से, प्रोग्राम मेरे अनुमान के अनुसार सही दिशा में गया। आगे प्रोग्राम renderEmailSubject को कॉल करता है। image

  • आगे प्रोग्राम DefaultVelocityTemplatingEngine.render(this.subjectTemplate) को कॉल करता है। image

  • DefaultVelocityTemplatingEngine.applying और DefaultVelocityTemplatingEngine.asPlainText पर पहुँचते हैं। image

  • आगे asPlainText(Writer writer) को कॉल करते हैं। image

  • toWriterImpl पर पहुँचते हैं, क्योंकि मैंने जो writer दिया है वह एक Fragment है, इसलिए प्रोग्राम else पर जाता है।

private void toWriterImpl(Writer writer, boolean attachCartridge) throws IOException {
            if (this.source instanceof File) {
                File template = (File)this.source;
                if (attachCartridge) {
                    this.context.attachEventCartridge(DefaultVelocityTemplatingEngine.this.createDefaultCartridge());
                }
टूल डाउनलोड करें