व्हाइटपेपर जो SSTI और कोड इंजेक्शन के लिए Error-Based और Boolean Error-Based Blind तकनीकों का परिचय देता है, जिसमें छह प्रोग्रामिंग भाषाओं के लिए यूनिवर्सल पेलोड और SSTImap में एकीकरण शामिल है।
[!NOTE] यह श्वेतपत्र का दूसरा संस्करण है, जो SSTImap संस्करण 1.3.1 जारी करने से पहले प्रस्तुत किए गए परिणामों पर आधारित है। आगे के सुधारों को बाद में अनुसंधान के संस्करण 1.2 के रूप में इस प्रारूप में अनुकूलित किया जाएगा।
भेद्यता की कुछ श्रेणियाँ पहली नज़र में सुप्रसिद्ध और कुछ हद तक स्पष्ट लग सकती हैं। ऐसा लग सकता है कि उन भेद्यताओं के लिए सभी संभावित तकनीकें ज्ञात हैं, इसलिए केवल असामान्य मामलों के लिए पेलोड ही खोजे जा सकते हैं। सर्वर-साइड टेम्पलेट इंजेक्शन (SSTI) और कोड इंजेक्शन को अक्सर उन सुप्रसिद्ध श्रेणियों में माना जाता है।
कभी-कभी, उन भेद्यताओं के लिए स्व-व्याख्यात्मक नामों वाली नई तकनीकों का सामना होता है। कई शोधकर्ता उन तकनीकों को भी सुप्रसिद्ध मान सकते हैं या उनका उपयोग करना भी याद कर सकते हैं, लेकिन वास्तव में, तकनीक केवल एक सामान्य रूप से समझे जाने वाले नाम के रूप में मौजूद हो सकती है, जिसमें कोई शोध, विवरण या सार्वभौमिक पेलोड नहीं होते हैं। इसका उल्लेख कुछ बार बहुत विशिष्ट मामलों के पेलोड के साथ किया जा सकता है, लेकिन इसका परीक्षण नहीं किया जाएगा और उस तकनीक की वास्तविक क्षमता वर्षों तक अनदेखी रह सकती है।
यह शोध कोड इंजेक्शन और SSTI के लिए दो ऐसी तकनीकें प्रस्तुत करता है: एरर-बेस्ड और बूलियन एरर-बेस्ड ब्लाइंड। मैं छह प्रोग्रामिंग भाषाओं: Python, PHP, Java, Ruby, NodeJS और Elixir में कोड इंजेक्शन और SSTI के लिए पेलोड प्रदान करूँगा। इसके अलावा, मैं सार्वभौमिक डिटेक्शन पेलोड प्रदान करूँगा, जो ब्लाइंड इंजेक्शन का भी तुरंत पता लगाने में सक्षम हैं।
मैं अपने शोध की पूरी समयरेखा प्रदान करूँगा, प्रारंभिक सुरागों से लेकर अंतिम निष्कर्षों तक। मैं उन प्रोग्रामिंग भाषाओं और टेम्पलेट्स के लिए नए पेलोड बनाने की प्रक्रिया का भी पता लगाऊँगा, जिनका इस शोध में उल्लेख नहीं किया गया है।
इस शोध में मैं नई तकनीकों के व्यावहारिक अनुप्रयोगों के उदाहरण दिखाऊँगा और आगे के शोध के संभावित क्षेत्रों को साझा करूँगा। सभी प्रदान किए गए पेलोड का उपयोग वास्तविक दुनिया के अनुप्रयोगों में भेद्यताओं का पता लगाने और उनका शोषण करने के लिए किया जा सकता है। इसके अतिरिक्त, सभी प्रदान किए गए पेलोड को ओपन-सोर्स टूल SSTImap में जोड़ा गया, जिससे इस शोध के परिणामों को वास्तविक दुनिया के लक्ष्यों पर लागू करना आसान हो जाता है।
सर्वर-साइड टेम्पलेट इंजेक्शन भेद्यताएँ गतिशील वेबसाइटों पर दिखाई देती हैं जो सर्वर-साइड रेंडरिंग के लिए टेम्पलेट इंजन का उपयोग करती हैं, जब अविश्वसनीय उपयोगकर्ता इनपुट को टेम्पलेट में डाला जाता है, इससे पहले कि इसे टेम्पलेट इंजन द्वारा संसाधित किया जाए। एक दुर्भावनापूर्ण अभिनेता वैध टेम्पलेट सिंटैक्स सम्मिलित कर सकता है, जिसे पेज रेंडरिंग के दौरान टेम्पलेट इंजन द्वारा संसाधित किया जाएगा। कई टेम्पलेट इंजन कुछ प्रकार की कोड निष्पादन कार्यक्षमता प्रदान करते हैं, जो अक्सर लक्ष्य सर्वर पर रिमोट कोड एक्जीक्यूशन (RCE) की ओर ले जाता है। यह शोध उन टेम्पलेट इंजनों पर केंद्रित है जो शोषण के मामले में ऐसी क्षमताएँ प्रदान करते हैं।
SSTI भेद्यताएँ 2015 से ज्ञात हैं, और उस समय में बहुत सारे पेलोड खोजे गए जो सूचना निष्कर्षण, फ़िल्टर बाइपास और सैंडबॉक्स एस्केपिंग प्रदान करते हैं। इसके बावजूद, अधिकांश पेलोड या तो परिणाम को सीधे पृष्ठ पर प्रस्तुत करते हैं या कोड निष्पादन के तथ्य पर ध्यान केंद्रित करते हैं, उस कोड द्वारा उत्पादित परिणामों को छोड़ देते हैं।

एक और प्रसिद्ध SSTI तकनीक टाइम-बेस्ड ब्लाइंड है, जिसमें निष्पादित शेल कमांड में विलंब जोड़ना शामिल है। यह तकनीक इंजेक्ट किए गए कोड निष्पादन की सफलता का निर्धारण करने की अनुमति देती है, लेकिन OS कमांड निष्पादन के लिए पेलोड का अनुमान लगाने की आवश्यकता होती है, जो शोधकर्ता के लिए अज्ञात टेम्पलेट इंजन में ब्लाइंड SSTI का पता लगाना कठिन बना देती है।

SSTI भेद्यता वर्ग और दोनों ज्ञात शोषण तकनीकों की खोज 2015 में जेम्स केटल (James Kettle) ने की थी। उन तकनीकों का उनके शोध "सर्वर-साइड टेम्पलेट इंजेक्शन: आधुनिक वेब ऐप के लिए RCE" में बहुत विस्तार से वर्णन किया गया है। [^1] उसके बाद दस वर्षों में, कोई नई शोषण तकनीक दस्तावेज़ित नहीं की गई। 2023 में केवल एक डिटेक्शन तकनीक की खोज की गई, जो एक साथ कई टेम्पलेट इंजनों के परीक्षण के लिए पॉलीग्लॉट पेलोड का उपयोग करती है। यह तकनीक मैक्सिमिलियन हिल्डेब्रांड (Maximilian Hildebrand) द्वारा खोजी गई और उनके शोध "बड़े पैमाने पर टेम्पलेट इंजेक्शन स्कैनिंग के लिए टेम्पलेट इंजनों का पता लगाने और पहचान में सुधार" में वर्णित है। [^2] यह तकनीक न्यूनतम अनुरोधों का उपयोग करके टेम्पलेट इंजनों को निर्धारित करने पर केंद्रित है, लेकिन केवल सरल इंजेक्शन संदर्भों के लिए काम करती है।

अधिकांश टेम्पलेट इंजन व्याख्यात्मक प्रोग्रामिंग भाषाओं जैसे PHP, NodeJS और Python पर आधारित होते हैं, सीधे संबंधित प्रोग्रामिंग भाषाओं के भावों का मूल्यांकन करने की अनुमति देते हैं। यह क्षमता हमें टेम्पलेट टैग के सही प्रारूप में लपेटकर व्यापक कोड इंजेक्शन भेद्यता श्रेणी के पेलोड का उपयोग करने की अनुमति देती है।
कोड इंजेक्शन SSTI के बिना भी हो सकता है, जब अविश्वसनीय उपयोगकर्ता इनपुट eval() या समान खतरनाक फ़ंक्शन तक पहुँच सकता है।
अक्सर यह माना जाता है कि कोड इंजेक्शन का शोषण संबंधित भाषा में प्रोग्रामिंग मात्र है,
इसलिए तकनीकों और पेलोड को केवल विशिष्ट भेद्यता उदाहरणों के लिए दस्तावेज़ित किया जाता है, जिनमें लक्ष्य अनुप्रयोग के लिए कोड को अनुकूलित करने की आवश्यकता होती है।
कोड इंजेक्शन और SSTI के लिए अधिक सार्वभौमिक डिटेक्शन तकनीकों की कमी ब्लाइंड कोड और टेम्पलेट इंजेक्शन के लिए ब्लैक बॉक्स स्कैनिंग की अक्षमता की ओर ले जाती है।
इस शोध में, कोड इंजेक्शन और SSTI के लिए दो नई तकनीकें, साथ ही छह प्रोग्रामिंग भाषाओं के लिए पेलोड और जेनेरिक डिटेक्शन पेलोड प्रदान किए जाएंगे। प्रदान की गई तकनीकें ब्लाइंड SSTI शोषण की क्षमताओं का विस्तार करेंगी, साथ ही इंजेक्ट किए गए कोड की प्रोग्रामिंग भाषा का अनुमान लगाए बिना ब्लाइंड कोड इंजेक्शन और SSTI स्कैनिंग की अनुमति देंगी।
इस शोध में प्रदान किए गए पेलोड वास्तविक दुनिया के वेब अनुप्रयोगों के व्यावहारिक पेनिट्रेशन टेस्टिंग के उद्देश्य से हैं। सभी प्रस्तुत पेलोड को SSTI और कोड इंजेक्शन का पता लगाने के लिए ओपन-सोर्स टूल SSTImap के मॉड्यूल में भी शामिल किया गया है। [^3] संस्करण 1.3.0 में दो नई तकनीकों और संबंधित पेलोड के लिए समर्थन जोड़ा गया। इस शोध में प्रदान की गई नई तकनीकों के व्यावहारिक अनुप्रयोग के लिए कम सामान्य और अधिक विशिष्ट पेलोड, अतिरिक्त SSTImap मॉड्यूल में शामिल किए गए हैं, जो "extra" मॉड्यूल के लिए समर्पित भंडार में पाए जा सकते हैं। [^4]