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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2019-3396 — CVE-2019-3396 के लिए चरण-दर-चरण विश्लेषण और शोषण मार्गदर्शिका, जो Confluence Server & Data Center में एक गंभीर SSTI भेद्यता है, जिसमें डिबगिंग और RCE पेलोड निष्पादन शामिल है। | Kitploit
उपकरण/GitHubGitHub/tranphuc2005/cve-2019-3396
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब एप्लिकेशन शोषणलर्निंग और शिक्षालैब और अभ्यास
GitHubtranphuc2005/cve-2019-3396

CVE-2019-3396

CVE-2019-3396 के लिए चरण-दर-चरण विश्लेषण और शोषण मार्गदर्शिका, जो Confluence Server & Data Center में एक गंभीर SSTI भेद्यता है, जिसमें डिबगिंग और RCE पेलोड निष्पादन शामिल है।

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

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

सभी देखें →

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

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

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

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

CVE-2019-3396

🔎 मुख्य जानकारी:

  • प्रभावित उत्पाद: Confluence Server & Data Center

  • प्रभावित संस्करण: 6.0.0 से 6.15.4 तक

  • गंभीरता स्तर: Critical (CVSS ~9.8)

  • कारण:

    • Confluence में Widget Connector प्लगिन है (वीडियो, बाहरी सामग्री जैसे YouTube, Vimeo आदि एम्बेड करने के लिए)।

    • यह कार्यक्षमता उपयोगकर्ता के इनपुट को सही ढंग से नियंत्रित नहीं करती, जिससे Server-Side Template Injection (SSTI) होता है।

    • हमलावर दुर्भावनापूर्ण payload भेज सकता है → Confluence इसे Velocity template engine द्वारा render करता है → सर्वर पर कोड निष्पादित होता है।

1. वेबसाइट इंस्टॉल करना और शुरू करना

  • उदाहरण के लिए प्रभावित संस्करण 6.9.0 इंस्टॉल करें:
https://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-6.9.0.zip
  • निर्देशों के अनुसार सेटअप करें:
https://nguyendt.hashnode.dev/confluence-cve-2019-3396
  • सफलतापूर्वक इंस्टॉल करने के बाद हमें इंटरफ़ेस मिल जाएगा

1

2. दोष वाली जगह ढूँढना और डीबग करना

2.1 दोष वाली जगह ढूँढना

  • POC के अनुसार दोष Widget Connector अनुभाग में है (वीडियो, बाहरी सामग्री जैसे YouTube, Vimeo आदि एम्बेड करने के लिए)
  • उस कार्यक्षमता को ढूँढें:
  1. Other macros अनुभाग चुनें

1

  1. Widget Connector नामक रेंडरिंग टूल खोजें

1

  1. लिंक डालें और आवश्यक जानकारी भरें, फिर Preview चुनें

1

2.2 डीबग करने के लिए सेटअप करें

  • चूंकि विवरण में Widget Connector का उल्लेख है, हम Confluence के सोर्स फोल्डर में खोजते हैं

1

  • Intellij IDEA का उपयोग करके .jar फ़ाइल पढ़ें
  • लिंक रिज़ॉल्यूशन प्रोसेसिंग वाले स्थानों पर Breakpoint लगाएं और डीबग प्रक्रिया करें

डीबग शुरू करें

  • डीबग शुरू करें और com.atlassian.confluence.extra.widgetconnector.WidgetMacro.class पर breakpoint सेट करें
  • यहाँ हमें पैरामीटर दिखाई देते हैं
  • DefaultRenderManager.class क्लास को कॉल करें

1

  • यहाँ getEmbeddedHtml() फ़ंक्शन उपयोग होता है
  • यह Confluence पेज में उपयोगकर्ता द्वारा डाले गए URL के आधार पर बाहरी सामग्री (वीडियो, widget, दस्तावेज़ आदि) को एम्बेड करने के लिए HTML कोड लौटाता है
  • वहाँ से YoutubeRenderer फ़ंक्शन को कॉल करता है

1

  • YoutubeRenderer क्लास में जाएं
  • इस फ़ंक्शन में getEmbeddedHtml(String url, Map<String, String> params)
  • url → वह मूल YouTube लिंक जो उपयोगकर्ता ने डाला है
  • params → एक map जिसमें render करने के लिए कॉन्फ़िगरेशन पैरामीटर होते हैं (उदाहरण: चौड़ाई, ऊँचाई, render के लिए टेम्पलेट आदि)।

1

  • आगे getEmbedUrl(), setDefaultParam() और DefaultVelocityRenderService.render() को कॉल करते हैं
  • setDefaultParam() पर ध्यान केंद्रित करें

1

  • यदि _template नहीं है → डिफ़ॉल्ट टेम्पलेट youtube.vm असाइन करें। => इसलिए प्रोग्राम में _template को स्वयं जोड़ा जा सकता है

  • अगला, DefaultVelocityRenderService.render() में जाएं

  1. फ़ंक्शन का उद्देश्य

    • url और params पैरामीटर लेता है।

    • Velocity टेम्पलेट (.vm) का उपयोग करके एम्बेडेड HTML (iframe, embed, …) render करता है।

  2. टेम्पलेट पहचानना

    • यदि params में _template है → उस टेम्पलेट का उपयोग करें।

    • यदि नहीं → डिफ़ॉल्ट embed.vm का उपयोग करें।

  3. MacroUtils.defaultVelocityContext() द्वारा डिफ़ॉल्ट context बनाएं।

  • सभी पैरामीटर को params से context में डालें:

    • यदि key = tweetHtml है → HTML को वैसे ही रखें।

    • अन्यथा → GeneralUtil.htmlEncode() द्वारा सुरक्षित encode करें।

  • context में urlHtml, width, height जोड़ें (यदि खाली हैं तो डिफ़ॉल्ट 400 × 300 असाइन करें)।

1

  • VelocityUtils.getRenderedTemplate() को कॉल करें

1

  • अब हम VelocityUtils क्लास पर जाएंगे
  • ऊपर getRenderedTemplate और getRenderedTemplateWithoutSwallowingErrors() को कॉल किया गया

1

  • फिर आगे getTemplate() को कॉल करें

1

  • यहाँ templateName वही _template है जो ऊपर है।

  • आगे VelocityEngine.Template() को कॉल करें

1

  • VelocityEngine क्लास में RuntimeInstance.getTemplate() को कॉल करें

1

RuntimeInstance (Velocity core)
यह Velocity Engine का "दिल" है। यह निम्न कार्य करता है:

  • Engine आरंभ करना (init)

  • कॉन्फ़िगरेशन, मैक्रो, parser, directives, event handlers आदि प्रबंधित करना

  • और विशेष रूप से: ResourceManager के माध्यम से resource प्रबंधित करना

→ इसका मतलब है कि RuntimeInstance खुद resource लोड नहीं करता, बल्कि resourceManager को अधिकार सौंपता है।

  • फिर CompatibleVelocityResourceManager.getResource() को कॉल करें

1

ConfigurableResourceManager (Confluence custom)
यह ResourceManager इंटरफ़ेस का एक implementation है।
यह निम्न के लिए ज़िम्मेदार है:

  • resource loaders प्रबंधित करना (file loader, classpath loader, URL loader…)।

  • globalCache प्रबंधित करना (resourceKey के अनुसार टेम्पलेट कैश करना)।

  • जब RuntimeInstance अनुरोध करता है तो टेम्पलेट (.vm फ़ाइल) लोड/refresh करना।

1

try {
    this.refreshResource(resource, encoding);
} catch (ResourceNotFoundException var7) {
    this.globalCache.remove(resourceKey);
    return this.getResource(resourceName, resourceType, encoding);
}
  • जब resource कैश में होता है, तो यह तुरंत नहीं लौटाता, बल्कि refreshResource(...) को कॉल करता है।

  • refreshResource डिस्क पर lastModified time की तुलना कैश से करता है।

  • यदि फ़ाइल बदल गई है → कैश में resource अमान्य हो जाएगा → डिस्क से पुनः लोड होगा → कैश अपडेट होगा।

👉 इसलिए आपको resourceKey को हाथ से बदलने की आवश्यकता नहीं है। refresh तंत्र सुनिश्चित करता है कि टेम्पलेट बदलने पर कैश भी अपडेट हो।

_template जोड़ें और अनुरोध फिर से भेजें

1

  • हम Velocity में ResourceLoader इंस्टेंस की सूची (आरंभिक ऑब्जेक्ट) देखते हैं
टूल डाउनलोड करें