11 KiB
HTTP प्रतिक्रिया स्मगलिंग / डिसिंक
AWS हैकिंग सीखें शून्य से नायक तक htARTE (HackTricks AWS रेड टीम एक्सपर्ट) के साथ!
HackTricks का समर्थन करने के अन्य तरीके:
- यदि आप अपनी कंपनी का विज्ञापन HackTricks में देखना चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं तो सब्सक्रिप्शन प्लान्स देखें!
- आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें
- The PEASS Family की खोज करें, हमारा विशेष NFTs संग्रह
- 💬 Discord समूह में शामिल हों या telegram समूह में या Twitter 🐦 पर मुझे फॉलो करें @carlospolopm.
- अपनी हैकिंग ट्रिक्स साझा करें, HackTricks और HackTricks Cloud github repos में PRs सबमिट करके.
HTTP अनुरोध कतार डिसिंक्रोनाइजेशन
सबसे पहले, यह तकनीक HTTP अनुरोध स्मगलिंग भेद्यता का दुरुपयोग करती है, इसलिए आपको पता होना चाहिए कि यह क्या है:
इस तकनीक और सामान्य HTTP अनुरोध स्मगलिंग के बीच मुख्य अंतर यह है कि बजाय पीड़ित के अनुरोध पर हमला करने के उसमें एक प्रीफिक्स जोड़ने के, हम पीड़ित को मिलने वाली प्रतिक्रिया को लीक या संशोधित करने जा रहे हैं. इसे करने के लिए, बजाय एक अनुरोध और आधे को भेजने के लिए HTTP अनुरोध स्मगलिंग का दुरुपयोग करने के, हम 2 पूर्ण अनुरोध भेजेंगे ताकि प्रॉक्सीज की प्रतिक्रिया कतार को डिसिंक्रोनाइज कर सकें.
इसका कारण यह है कि हम प्रतिक्रिया कतार को डिसिंक्रोनाइज करने में सक्षम होंगे ताकि पीड़ित के वैध अनुरोध की प्रतिक्रिया हमलावर को भेजी जा सके, या पीड़ित को मिलने वाली प्रतिक्रिया में हमलावर द्वारा नियंत्रित सामग्री इंजेक्ट करके.
HTTP पाइपलाइन डिसिंक
HTTP/1.1 पिछले अनुरोधों के लिए प्रतीक्षा किए बिना विभिन्न संसाधनों के लिए पूछने की अनुमति देता है. इसलिए, यदि बीच में एक प्रॉक्सी है, तो यह प्रॉक्सी का काम है कि बैकएंड को भेजे गए अनुरोधों और उससे आने वाली प्रतिक्रियाओं का सिंक्रोनाइज्ड मैच बनाए रखें.
हालांकि, प्रतिक्रिया कतार को डिसिंक्रोनाइज करने में एक समस्या है. यदि एक हमलावर HTTP प्रतिक्रिया स्मगलिंग हमला भेजता है और प्रारंभिक अनुरोध और स्मगल किए गए अनुरोध की प्रतिक्रियाएं तुरंत दी जाती हैं, तो स्मगल की गई प्रतिक्रिया पीड़ित की प्रतिक्रिया कतार में नहीं डाली जाएगी बल्कि बस एक त्रुटि के रूप में निरस्त कर दी जाएगी.
इसलिए, यह आवश्यक है कि स्मगल किया गया अनुरोध बैक-एंड सर्वर के अंदर प्रोसेस होने में अधिक समय ले. इसलिए, जब तक स्मगल किया गया अनुरोध प्रोसेस होता है, हमलावर के साथ संचार समाप्त हो जाएगा.
यदि इस विशेष स्थिति में एक पीड़ित ने एक अनुरोध भेजा है और स्मगल किया गया अनुरोध वैध अनुरोध से पहले उत्तर दिया जाता है, तो स्मगल की गई प्रतिक्रिया पीड़ित को भेजी जाएगी. इसलिए, हमलावर पीड़ित द्वारा "किए गए" अनुरोध को नियंत्रित करेगा.
इसके अलावा, यदि हमलावर फिर एक अनुरोध करता है और पीड़ित के अनुरोध के लिए वैध प्रतिक्रिया उत्तर दी जाती है हमलावर के अनुरोध से पहले. पीड़ित के लिए प्रतिक्रिया हमलावर को भेजी जाएगी, पीड़ित की प्रतिक्रिया चुराते हुए (जिसमें उदाहरण के लिए हेडर Set-Cookie शामिल हो सकता है).
एकाधिक नेस्टेड इंजेक्शन
सामान्य HTTP अनुरोध स्मगलिंग के साथ एक और रोचक अंतर यह है कि, एक सामान्य स्मगलिंग हमले में, लक्ष्य यह है कि पीड़ित के अनुरोध की शुरुआत को संशोधित किया जाए ताकि वह एक अप्रत्याशित क्रिया करे. एक HTTP प्रतिक्रिया स्मगलिंग हमले में, चूंकि आप पूर्ण अनुरोध भेज रहे हैं, आप एक पेलोड में दसों प्रतिक्रियाएं इंजेक्ट कर सकते हैं जो दसों उपयोगकर्ताओं को डिसिंक्रोनाइज करेगी जो इंजेक्ट की गई प्रतिक्रियाएं प्राप्त करेंगे.
वैध उपयोगकर्ताओं के बीच दसों एक्सप्लॉइट्स को आसानी से वितरित करने के अलावा, इसका उपयोग सर्वर में DoS का कारण बनने के लिए भी किया जा सकता है.
एक्सप्लॉइट संगठन
पहले बताए गए अनुसार, इस तकनीक का दुरुपयोग करने के लिए, यह आवश्यक है कि पहला स्मगल संदेश सर्वर में प्रोसेस होने में बहुत समय ले.
यदि हम सिर्फ पीड़ित की प्रतिक्रिया चुराने की कोशिश करना चाहते हैं तो यह समय लेने वाला अनुरोध पर्याप्त है. लेकिन यदि आप एक अधिक जटिल एक्सप्लॉइट करना चाहते हैं तो यह एक्सप्लॉइट के लिए एक सामान्य संरचना होगी.
सबसे पहले प्रारंभिक अनुरोध HTTP अनुरोध स्मगलिंग का दुरुपयोग करते हुए, फिर समय लेने वाला अनुरोध और फिर 1 या अधिक पेलोड अनुरोध जिनकी प्रतिक्रियाएं पीड़ितों को भेजी जाएंगी.
HTTP प्रतिक्रिया कतार डिसिंक्रोनाइजेशन का दुरुपयोग
अन्य उपयोगकर्ताओं के अनुरोधों को कैप्चर करना
HTTP अनुरोध स्मगलिंग के ज्ञात पेलोड्स के साथ, आप पीड़ित के अनुरोध को चुरा सकते हैं एक महत्वपूर्ण अंतर के साथ: इस मामले में आपको केवल प्रतिक्रिया में परिलक्षित होने वाली सामग्री भेजने की आवश्यकता है, कोई स्थायी भंडारण की आवश्यकता नहीं है.