Cookie Tossing

Reading time: 6 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

Description

यदि एक हमलावर एक उपडोमेन या किसी कंपनी के डोमेन को नियंत्रित कर सकता है या उपडोमेन में XSS खोजता है तो वह इस हमले को करने में सक्षम होगा।

जैसा कि कुकीज़ हैकिंग अनुभाग में संकेत दिया गया था, जब एक कुकी को एक डोमेन पर सेट किया जाता है (इसे निर्दिष्ट करते हुए) तो इसका उपयोग डोमेन और उपडोमेन में किया जाएगा।

caution

इसलिए, एक हमलावर एक विशिष्ट कुकी को डोमेन और उपडोमेन पर सेट करने में सक्षम होगा ऐसा कुछ करते हुए document.cookie="session=1234; Path=/app/login; domain=.example.com"

यह खतरनाक हो सकता है क्योंकि हमलावर सक्षम हो सकता है:

  • शिकार की कुकी को हमलावर के खाते में स्थिर करना ताकि यदि उपयोगकर्ता ध्यान न दे, वह हमलावर के खाते में क्रियाएँ करेगा और हमलावर कुछ दिलचस्प जानकारी प्राप्त कर सकता है (प्लेटफ़ॉर्म पर उपयोगकर्ता की खोजों का इतिहास देखना, शिकार अपने खाते में अपना क्रेडिट कार्ड सेट कर सकता है...)
  • इसका एक उदाहरण यहां पाया जा सकता है जहां हमलावर ने अपनी कुकी को विशिष्ट अनुभागों में सेट किया जो एक शिकार अपने git रिपोजिटरी तक पहुँच के लिए उपयोग करेगा लेकिन हमलावर के खाते से क्योंकि वह आवश्यक एंडपॉइंट्स में अपनी कुकीज़ सेट करेगा।
  • यदि कुकी लॉगिन के बाद नहीं बदलती है, तो हमलावर बस एक कुकी (सत्र-स्थिरता) को स्थिर कर सकता है, शिकार के लॉगिन करने की प्रतीक्षा कर सकता है और फिर उस कुकी का उपयोग करके शिकार के रूप में लॉगिन कर सकता है
  • कभी-कभी, भले ही सत्र कुकीज़ बदलती हैं, हमलावर पिछले एक का उपयोग करता है और उसे नया भी प्राप्त होता है।
  • यदि कुकी कुछ प्रारंभिक मान सेट कर रही है (जैसे कि फ्लास्क में जहां कुकी सत्र का CSRF टोकन सेट कर सकती है और यह मान शिकार के लॉगिन करने के बाद बनाए रखा जाएगा), तो हमलावर इस ज्ञात मान को सेट कर सकता है और फिर इसका दुरुपयोग कर सकता है (उस परिदृश्य में, हमलावर फिर उपयोगकर्ता को CSRF अनुरोध करने के लिए मजबूर कर सकता है क्योंकि वह CSRF टोकन जानता है)।
  • मान सेट करने के समान, हमलावर एक अनधिकृत कुकी भी प्राप्त कर सकता है जो सर्वर द्वारा उत्पन्न होती है, उससे CSRF टोकन प्राप्त कर सकता है और इसका उपयोग कर सकता है।

जब एक ब्राउज़र को एक ही नाम की दो कुकीज़ प्राप्त होती हैं जो एक ही दायरे को आंशिक रूप से प्रभावित करती हैं (डोमेन, उपडोमेन और पथ), तो ब्राउज़र दोनों कुकी के मान भेजेगा जब दोनों अनुरोध के लिए मान्य हों।

इस पर निर्भर करते हुए कि किसके पास सबसे विशिष्ट पथ है या कौन सा पुराना है, ब्राउज़र पहले कुकी का मान सेट करेगा और फिर दूसरे का मान जैसे: Cookie: iduser=MoreSpecificAndOldestCookie; iduser=LessSpecific;

अधिकांश वेबसाइटें केवल पहले मान का उपयोग करेंगी। फिर, यदि एक हमलावर कुकी सेट करना चाहता है, तो इसे किसी अन्य के सेट होने से पहले सेट करना बेहतर है या इसे अधिक विशिष्ट पथ के साथ सेट करना बेहतर है।

warning

इसके अलावा, एक अधिक विशिष्ट पथ में कुकी सेट करने की क्षमता बहुत दिलचस्प है क्योंकि आप शिकार को अपनी कुकी के साथ काम करने के लिए मजबूर कर सकते हैं सिवाय उस विशिष्ट पथ के जहां दुर्भावनापूर्ण कुकी सेट की गई होगी

Protection Bypass

इस हमले के खिलाफ संभावित सुरक्षा यह हो सकती है कि वेब सर्वर एक ही नाम की दो कुकीज़ को लेकिन दो अलग-अलग मानों के साथ स्वीकार नहीं करेगा

उस परिदृश्य को बायपास करने के लिए जहां हमलावर एक कुकी सेट कर रहा है जब शिकार को पहले ही कुकी दी जा चुकी है, हमलावर एक कुकी ओवरफ्लो का कारण बन सकता है और फिर, एक बार जब वैध कुकी हटा दी जाती है, तो दुर्भावनापूर्ण कुकी सेट कर सकता है

Cookie Jar Overflow

एक और उपयोगी बायपास यह हो सकता है कि कुकी के नाम को URL एन्कोड करें क्योंकि कुछ सुरक्षा अनुरोध में एक ही नाम की 2 कुकीज़ की जांच करती हैं और फिर सर्वर कुकीज़ के नामों को डिकोड करेगा।

एक Cookie Tossing हमला Cookie Bomb हमले को करने के लिए भी उपयोग किया जा सकता है:

Cookie Bomb

Defenses

कुकी नाम में __Host उपसर्ग का उपयोग करें

  • यदि एक कुकी नाम में यह उपसर्ग है, तो यह केवल स्वीकार किया जाएगा यदि इसे सुरक्षित के रूप में चिह्नित किया गया है, एक सुरक्षित मूल से भेजा गया है, इसमें डोमेन विशेषता शामिल नहीं है, और पथ विशेषता को / पर सेट किया गया है
  • यह उपडोमेन को शीर्ष डोमेन पर कुकी को मजबूर करने से रोकता है क्योंकि इन कुकीज़ को "डोमेन-लॉक" के रूप में देखा जा सकता है

References

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें