Server Side Inclusion/Edge Side Inclusion Injection
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
(Introduction taken from Apache docs)
SSI (Server Side Includes) ऐसे निर्देश हैं जो HTML पृष्ठों में रखे जाते हैं, और सर्वर पर मूल्यांकित होते हैं जब पृष्ठों को परोसा जा रहा होता है। ये आपको एक मौजूदा HTML पृष्ठ में गतिशील रूप से उत्पन्न सामग्री जोड़ने की अनुमति देते हैं, बिना पूरे पृष्ठ को CGI प्रोग्राम या अन्य गतिशील तकनीक के माध्यम से परोसने की आवश्यकता के। उदाहरण के लिए, आप एक मौजूदा HTML पृष्ठ में एक निर्देश रख सकते हैं, जैसे:
<!--#echo var="DATE_LOCAL" -->
और, जब पृष्ठ परोसा जाता है, तो यह अंश मूल्यांकित किया जाएगा और इसके मान से प्रतिस्थापित किया जाएगा:
Tuesday, 15-Jan-2013 19:28:54 EST
SSI का उपयोग कब करना है, और कब आपके पृष्ठ को पूरी तरह से किसी प्रोग्राम द्वारा उत्पन्न करना है, यह आमतौर पर इस बात का मामला होता है कि पृष्ठ का कितना हिस्सा स्थिर है, और कितना हर बार पृष्ठ परोसने पर पुनः गणना करने की आवश्यकता है। SSI छोटी जानकारी के टुकड़े जोड़ने का एक शानदार तरीका है, जैसे कि वर्तमान समय - जो ऊपर दिखाया गया है। लेकिन यदि आपके पृष्ठ का अधिकांश भाग उस समय उत्पन्न हो रहा है जब इसे परोसा जाता है, तो आपको किसी अन्य समाधान की तलाश करनी होगी।
आप SSI की उपस्थिति का अनुमान लगा सकते हैं यदि वेब एप्लिकेशन फ़ाइलों का उपयोग करता है जिनके एक्सटेंशन .shtml
, .shtm
या .stm
हैं, लेकिन यह केवल यही मामला नहीं है।
एक सामान्य SSI अभिव्यक्ति का निम्नलिखित प्रारूप होता है:
एक समस्या जानकारी या गतिशील अनुप्रयोगों को कैश करना है क्योंकि सामग्री का एक भाग अगले बार सामग्री को पुनः प्राप्त करते समय भिन्न हो सकता है। यही कारण है कि ESI का उपयोग किया जाता है, ESI टैग का उपयोग करके यह संकेत देने के लिए कि गतिशील सामग्री जो उत्पन्न की जानी चाहिए उसे कैश संस्करण भेजने से पहले उत्पन्न किया जाना चाहिए। यदि एक हमलावर कैश सामग्री के अंदर एक ESI टैग इंजेक्ट करने में सक्षम है, तो वह दस्तावेज़ पर मनमाना सामग्री इंजेक्ट करने में सक्षम हो सकता है इससे पहले कि इसे उपयोगकर्ताओं को भेजा जाए।
सर्वर से प्रतिक्रिया में निम्नलिखित हेडर का अर्थ है कि सर्वर ESI का उपयोग कर रहा है:
यदि आप इस हेडर को नहीं ढूंढ पा रहे हैं, तो सर्वर शायद ESI का उपयोग कर रहा है। एक अंधे शोषण दृष्टिकोण का भी उपयोग किया जा सकता है क्योंकि एक अनुरोध हमलावर के सर्वर पर पहुंचना चाहिए:
GoSecure ने विभिन्न ESI-सक्षम सॉफ़्टवेयर के खिलाफ संभावित हमलों को समझने के लिए एक तालिका बनाई है, जो समर्थित कार्यक्षमता के आधार पर है:
Includes: <esi:includes>
निर्देश का समर्थन करता है
Vars: <esi:vars>
निर्देश का समर्थन करता है। XSS फ़िल्टर को बायपास करने के लिए उपयोगी
Cookie: दस्तावेज़ कुकीज़ ESI इंजन के लिए सुलभ हैं
Upstream Headers Required: सरोगेट एप्लिकेशन ESI कथनों को संसाधित नहीं करेंगे जब तक कि अपस्ट्रीम एप्लिकेशन हेडर प्रदान न करे
Host Allowlist: इस मामले में, ESI शामिल केवल अनुमत सर्वर होस्ट से संभव हैं, जिससे SSRF, उदाहरण के लिए, केवल उन होस्ट के खिलाफ संभव है
सॉफ़्टवेयर | Includes | Vars | Cookies | Upstream Headers Required | Host Whitelist |
Squid3 | Yes | Yes | Yes | Yes | No |
Varnish Cache | Yes | No | No | Yes | Yes |
Fastly | Yes | No | No | No | Yes |
Akamai ESI Test Server (ETS) | Yes | Yes | Yes | No | No |
NodeJS esi | Yes | Yes | Yes | No | No |
NodeJS nodesi | Yes | No | No | No | Optional |
निम्नलिखित ESI निर्देश सर्वर के प्रतिक्रिया के अंदर एक मनमाना फ़ाइल लोड करेगा
दूरस्थ कुकी चुराना
HTTP_ONLY कुकी को XSS के माध्यम से चुराना और इसे प्रतिक्रिया में परावर्तित करना:
इसको "Local File Inclusion" के साथ भ्रमित न करें:
निम्नलिखित प्रतिक्रिया में Location
हेडर जोड़ेगा
मजबूर अनुरोध में हेडर जोड़ें
प्रतिक्रिया में हेडर जोड़ें (XSS के साथ "Content-Type: text/json" को बायपास करने के लिए उपयोगी)
यह प्रतिक्रिया में शामिल डिबग जानकारी भेजेगा:
xslt
पैरामीटर के लिए dca मान निर्दिष्ट करके, eXtensible Stylesheet Language Transformations (XSLT)
आधारित ESI को शामिल करना संभव है। समावेश HTTP सरोगेट को XML और XSLT फ़ाइलों को पुनः प्राप्त करने के लिए मजबूर करता है, जिसमें बाद वाला पूर्व को फ़िल्टर करता है। ऐसी XML फ़ाइलें XML External Entity (XXE) हमलों के लिए शोषणीय होती हैं, जिससे हमलावरों को SSRF हमले करने की अनुमति मिलती है। हालाँकि, इस दृष्टिकोण की उपयोगिता सीमित है क्योंकि ESI पहले से ही SSRF वेक्टर के रूप में कार्य करता है। अंतर्निहित Xalan पुस्तकालय में समर्थन की अनुपस्थिति के कारण, बाहरी DTDs को संसाधित नहीं किया जाता है, जिससे स्थानीय फ़ाइल निकासी को रोका जाता है।
XSLT फ़ाइल:
Check the XSLT page:
XSLT Server Side Injection (Extensible Stylesheet Language Transformations)Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)