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 छोटी जानकारी के टुकड़े जोड़ने का एक शानदार तरीका है, जैसे कि वर्तमान समय - जो ऊपर दिखाया गया है। लेकिन यदि आपके पृष्ठ का अधिकांश भाग उस समय उत्पन्न हो रहा है जब इसे परोसा जा रहा है, तो आपको किसी अन्य समाधान की तलाश करनी होगी।
यदि वेब एप्लिकेशन .shtml
, .shtm
या .stm
एक्सटेंशन वाले फ़ाइलों का उपयोग करता है, तो आप SSI की उपस्थिति का अनुमान लगा सकते हैं, लेकिन यह केवल यही मामला नहीं है।
एक सामान्य 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
हाँ
हाँ
हाँ
हाँ
नहीं
Varnish Cache
हाँ
नहीं
नहीं
हाँ
हाँ
Fastly
हाँ
नहीं
नहीं
नहीं
हाँ
Akamai ESI Test Server (ETS)
हाँ
हाँ
हाँ
नहीं
नहीं
NodeJS esi
हाँ
हाँ
हाँ
नहीं
नहीं
NodeJS nodesi
हाँ
नहीं
नहीं
नहीं
वैकल्पिक
निम्नलिखित ESI निर्देश सर्वर के प्रतिक्रिया के अंदर एक मनमाना फ़ाइल लोड करेगा
दूरस्थ कुकी चुराना
HTTP_ONLY कुकी को XSS के माध्यम से चुराना और इसे प्रतिक्रिया में परावर्तित करना:
इसे "स्थानीय फ़ाइल समावेशन" के साथ भ्रमित न करें:
निम्नलिखित प्रतिक्रिया में Location
हेडर जोड़ेगा
मजबूर अनुरोध में हेडर जोड़ें
प्रतिक्रिया में हेडर जोड़ें (XSS के साथ "Content-Type: text/json" को बायपास करने के लिए उपयोगी)
यह प्रतिक्रिया में शामिल डिबग जानकारी भेजेगा:
eXtensible Stylesheet Language Transformations (XSLT)
सिंटैक्स का उपयोग ESI में dca
मान को xslt
के रूप में निर्दिष्ट करके किया जा सकता है। जो XSLT का दुरुपयोग करके XML External Entity भेद्यता (XXE) बनाने और दुरुपयोग करने की अनुमति दे सकता है:
XSLT फ़ाइल:
Check the XSLT page:
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)