CSS इतिहास हैक का उपयोग करके CSRF टोकन हैक करना

अपडेट: सुरक्षा शोधकर्ता सिरदर्कट और गैरेथ एक शुद्ध सीएसएस आधारित सीएसआरएफ टोकन खोजक के लिए कोड साझा करने के लिए पर्याप्त थे। यह नीचे मेरे PoC की तुलना में चोरी करने वाला है, जो JS और CSS दोनों के संयोजन का उपयोग करता है। इसलिए, यह तब भी काम करेगा जब आप जावास्क्रिप्ट को निष्क्रिय कर देंगे और आप सुरक्षित नहीं हैं :(:( . इस PoC को क्लाइंट के लिए अधिक संवेदनशील बनाने के लिए, आपको आयात कमांड का उपयोग करके कई CSS स्टाइलशीट का उपयोग करना होगा। एकमात्र समस्या जो मुझे इस शुद्ध सीएसएस आधारित दृष्टिकोण के साथ दिखाई देती है, उसमें नेटवर्क कुंजी विलंबता शामिल होगी जिसमें बड़े कुंजी स्थान होते हैं क्योंकि आपकी बड़ी सीएसएस स्टाइलशीट को आपके ब्राउज़र द्वारा डाउनलोड करना होगा.


मैं उद्योग में उपयोग की जाने वाली क्रॉस साइट रिक्वेस्ट फ़ॉररी और वर्तमान शमन रणनीतियों की समस्या के बारे में सोच रहा था। अब तक मैंने जिन कई वास्तविक दुनिया के अनुप्रयोगों का परीक्षण किया है, उनमें मुझे उर के हिस्से के रूप में रैंडम टोकन का उपयोग दिखाई देता है। यदि अनुरोध कोई टोकन प्रदान करने में विफल रहता है या गलत मान के साथ टोकन प्रदान करता है, तो अनुरोध अस्वीकार कर दिया जाता है। यह CSRF या किसी भी क्रॉस डोमेन अनधिकृत फ़ंक्शन निष्पादन को रोकता है.

अब तक, यह सर्वर पर Brute Force Attacks का उपयोग करके अपने CSRF टोकन की खोज करने के लिए एक हमलावर के लिए संभव माना जाता था.

होने के कारण:

  1. यह उत्पन्न करता है नेटवर्क पर बहुत शोर और धीमा है. तो शायद एक आईडीएस या वेब ऐप फ़ायरवॉल दुर्भावनापूर्ण व्यवहार उठाएगा और आपके आईपी को अवरुद्ध कर देगा। उदाहरण के लिए, एक बेस 16 CSRF टोकन लंबाई 5 वर्ण (एक वर्ण से शुरू) लगभग 393,216 अनुरोध उत्पन्न करेगा.
  2. कई अनुप्रयोगों के लिए क्रमादेशित हैं अपना सत्र अमान्य करें इसके बाद यह अमान्य टोकन मूल्यों के साथ एक निश्चित संख्या से अधिक अनुरोधों का पता लगाता है। जैसे 30.

मैं आपको अलर्ट उत्पन्न किए बिना सीएसआरएफ टोकन को त्वरित रूप से खोजने के लिए एक तकनीक दिखाकर इस विश्वास को बदलने जा रहा हूं। यह तकनीक ए ग्राहक पक्ष पर हमला, इसलिए लगभग कोई नेटवर्क ट्रैफ़िक उत्पन्न नहीं हुआ है और इसलिए, आपके सर्वर और आईडीएस / वेब ऐप फायरवॉल ने जीत हासिल की है’टी बिल्कुल यह नोटिस। यह हमला 3 साल पहले जेरेमिया ग्रॉसमैन द्वारा पाए गए लोकप्रिय सीएसएस इतिहास हैक पर आधारित है.

इस कारनामे में, हम ब्राउट इतिहास में यूआरएल के विभिन्न सेट को मजबूर करके brr द्वारा csrf टोकन की खोज करते हैं। हम अलग-अलग सीएसआरएफ टोकन मूल्यों को यूआरएल के हिस्से के रूप में एम्बेड करने का प्रयास करेंगे और जांच करेंगे कि उपयोगकर्ता ने उस यूआरएल का दौरा किया है या नहीं। यदि हाँ, तो एक अच्छा मौका है कि उपयोगकर्ता वर्तमान सक्रिय सत्र में या तो उसी सीएसआरएफ टोकन का उपयोग कर रहा है या पिछले सत्र में उस टोकन का उपयोग कर सकता है। एक बार जब हमारे पास ऐसे सभी टोकन की सूची आ जाती है, तो हम उस छोटी सूची का उपयोग करके सर्वर पर अपने सीएसआरएफ हमले की कोशिश कर सकते हैं। वर्तमान में यह हमला 5 वर्णों या उससे कम लंबाई वाले टोकन के लिए संभव है। मैंने इसे 5 की बेस 16 स्ट्रिंग पर आज़माया और 2 मिनट से भी कम समय में पूरे मुख्य स्थान को मजबूर करने में सक्षम था.

इस हमले के लिए कुछ आवश्यक शर्तें काम करने के लिए हैं

  1. CSRF टोकन किसी विशेष उपयोगकर्ता सत्र के लिए समान रहता है। जैसे सीएसआरएफ टोकन = हैश (सेशन_आईडी) या
  2. उसी सत्र के लिए पुराने रूपों में प्रस्तुत CSRF टोकन स्वीकार किया जाता है। कई बार, यह मामला है क्योंकि यह उपयोगकर्ता अनुभव को बढ़ाता है और आगे और पीछे ब्राउज़र बटन का उपयोग करने की अनुमति देता है.

अवधारणा के सुबूत यहाँ उपलब्ध है.
PoC चलाने से पहले, आपको url और csrftoken paramater मानों को बदलना होगा.

चूक का उपयोग करके परीक्षण करने के लिए, आपको पहले निम्नलिखित यूआरएल में से एक पर जाने की आवश्यकता है, उदा.

  1. https://securethoughts.com/?param1=val1&csrftoken = b59fe [b59fe को किसी भी 5-अंकीय बेस 16 स्ट्रिंग में एक चरित्र के साथ शुरू करें, अर्थात a0000 की तुलना में]
  2. http://tinyurl.com/l2lwgd [जो पिछले url में 301 रीडायरेक्ट है].

ध्यान दें: ब्राउज़र के इतिहास में भंडारण करते समय http://www.securebodyts.com और https://secure हालांकिts.com को अलग तरह से व्यवहार किया जाता है.

एक नमूना रन इस तरह दिखेगा -

सीएसआर इतिहास हैक का उपयोग करके सीएसआरएफ टोकन हैक करनासीएसआर इतिहास हैक का उपयोग करके सीएसआरएफ टोकन हैक करना

इस हमले को अक्षम्य बनाने के लिए,

सर्वर-साइड समाधान (डेवलपर्स के लिए):

  • एक CLIENT SIDE हमले के लिए पर्याप्त होने के लिए अपने CSRF टोकन को पर्याप्त (8 या अधिक वर्ण) बनाएं। लगातार बढ़ती प्रसंस्करण शक्ति इस हमले को और अधिक टोकन के लिए संभव बनाती है.
  • Url में डालने के बजाय अपने CSRF टोकन को हिडन फॉर्म फील्ड के हिस्से के रूप में स्टोर करें.
  • प्रत्येक फ़ॉर्म सबमिशन के लिए एक अलग यादृच्छिक टोकन का उपयोग करें और किसी भी अप्रचलित टोकन को स्वीकार न करें, यहां तक ​​कि एक ही सत्र के लिए भी.

क्लाइंट-साइड समाधान (अपने ग्राहकों / उपयोगकर्ताओं के लिए):

  • SafeHistory जैसे ब्राउज़र प्लगइन का उपयोग करें, जो विज़िट किए गए लिंक-आधारित ट्रैकिंग तकनीकों के विरुद्ध बचाव करता है.
  • अपने ब्राउजर में प्राइवेट ब्राउजिंग मोड का इस्तेमाल करें.

और अंतिम, लेकिन कम से कम नहीं, XSS सभी CSRF सुरक्षा संभव है। तो, पहले XSS से छुटकारा पाएं.

मैं जेरेमिया को धन्यवाद देना चाहूंगा कि उन्होंने इस पोस्ट पर अपनी व्यावहारिक प्रतिक्रिया प्रदान की।

Brayan Jackson Administrator
Sorry! The Author has not filled his profile.
follow me