
टाइपोस्क्वाटिंग डोमेन और ब्राउज़र सेवा वर्कर्स का उपयोग करके बग बाउंटी लक्ष्यों के आंतरिक नेटवर्क की जांच करने के लिए स्वचालित CORS गलत कॉन्फ़िगरेशन खोज उपकरण।
of-CORS Truffle Security का टूल सूट है जो बग बाउंटी लक्ष्यों के आंतरिक नेटवर्क पर CORS गलत कॉन्फ़िगरेशन की पहचान करने और उनका शोषण करने के लिए टाइपोस्क्वॉटिंग का उपयोग करता है।
आप यहाँ और पढ़ सकते हैं https://trufflesecurity.com/blog/of-CORS
of-CORS Django और Django Rest Framework के शीर्ष पर निर्मित एक Python3 वेब एप्लिकेशन है। एक बार सेट अप और कॉन्फ़िगर करने के बाद, of-CORS स्वचालित रूप से किसी भी पीड़ित के ब्राउज़र में ब्राउज़र सर्विस वर्कर पंजीकृत करता है जो एप्लिकेशन पर आते हैं। ये सर्विस वर्कर पूर्व-कॉन्फ़िगर किए गए आंतरिक डोमेन की सूची में HTTP अनुरोध भेजते हैं, जिसका उद्देश्य आंतरिक नेटवर्क पर CORS गलत कॉन्फ़िगरेशन की खोज करना है। इन अनुरोधों के परिणाम (सफल हों या नहीं) तब API के माध्यम से वापस of-CORS इंस्टेंस को सबमिट किए जाते हैं।
एक बार जब पीड़ित के ब्राउज़र में सर्विस वर्कर पंजीकृत हो जाता है, तो एक JavaScript पेलोड ब्राउज़र को उस पृष्ठ पर रीडायरेक्ट करता है जिसे of-CORS मानता है कि वे मूल रूप से एक्सेस करने का प्रयास कर रहे थे।
एकत्रित परिणामों को बाद में of-CORS एप्लिकेशन पर उपलब्ध एक न्यूनतम डैशबोर्ड में देखा जा सकता है।
अपनी स्वयं की तैनाती में of-CORS सेट अप करने के लिए निम्नलिखित कदम उठाए जा सकते हैं।
of-CORS सेट अप करने की जटिलता (मुख्य रूप से SSL/TLS, DNS, और दोनों पर वाइल्डकार्ड अनुरोधों की अनुमति देने के आसपास की जटिलताओं) के कारण, हम एप्लिकेशन स्टैक में दो क्लाउड प्रदाताओं (Heroku और Cloudflare) का उपयोग करते हैं और उनके कॉन्फ़िगरेशन को स्वचालित करने के लिए Terraform का उपयोग करते हैं।
एक ऐसा डोमेन खरीदकर शुरू करें जिस पर लक्ष्य कंपनी का कोई आंतरिक कर्मचारी आने की संभावना रखता है। हम एक आंतरिक डोमेन का टाइपो-स्क्वॉट डोमेन खरीदने की सलाह देते हैं। हमने पाया है कि कॉपी-पेस्ट त्रुटियाँ शुरू करने के लिए एक अच्छी जगह हैं।
उदाहरण के लिए, यदि आप जिस कंपनी का CORS परीक्षण कर रहे हैं, वह आंतरिक डोमेन के लिए uberinternal.com का उपयोग करती है, तो आप आंतरिक कर्मचारियों से ब्राउज़र ट्रैफ़िक प्राप्त करना शुरू करने के लिए berinternal.com खरीदना चाह सकते हैं।
of-CORS वाइल्डकार्ड DNS अनुरोधों को प्राप्त करने और रूट करने के साथ-साथ SSL/TLS कनेक्शन को समाप्त करने के लिए Cloudflare का उपयोग करता है।
of-CORS के साथ DNS को सही ढंग से काम करने के लिए आपको एक सक्रिय Cloudflare खाते की आवश्यकता होगी। एक बार जब आपके पास Cloudflare खाता हो, तो आप एक API कुंजी बनाना चाहेंगे (जो यहाँ डैशबोर्ड पर किया जा सकता है)।
API कुंजी के पास ज़ोन के साथ-साथ DNS रिकॉर्ड जोड़ने, हटाने और कॉन्फ़िगर करने के लिए पर्याप्त विशेषाधिकार होने चाहिए। इसे API टोकन निर्माण पृष्ठ पर निम्नलिखित अनुमतियों का चयन करके प्राप्त किया जा सकता है:

एक बार जब आप सही अनुमतियों के साथ एक API टोकन बना लेते हैं, तो आप अगले चरण पर आगे बढ़ सकते हैं।
of-CORS आसान एप्लिकेशन तैनाती और होस्टिंग के लिए Heroku का उपयोग करता है।
of-CORS एप्लिकेशन स्टैक को चालू करने के लिए आपको एक सक्रिय Heroku खाते की आवश्यकता होगी। एक बार खाता होने पर, आप Heroku कमांड लाइन इंटरफ़ेस (CLI) टूल इंस्टॉल करना चाहेंगे। CLI इंस्टॉल होने पर, आप इसका उपयोग निम्नलिखित कमांड के साथ एक प्रमाणित CLI सत्र शुरू करने के लिए कर सकते हैं:
heroku login
फिर आप निम्नलिखित कमांड चलाकर पुष्टि कर सकते हैं कि आपका CLI सफलतापूर्वक प्रमाणित है:
heroku whoami
Terraform के साथ उपयोग के लिए Heroku CLI को अधिकृत करने पर आगे के दस्तावेज़ यहाँ पाए जा सकते हैं।
हमारे बुनियादी ढांचे के लिए आवश्यक API कुंजियाँ अब सेट अप और तैयार होने के साथ, हम तैनाती के लिए of-CORS कॉन्फ़िगर करने के लिए आगे बढ़ सकते हैं। निम्नलिखित उदाहरण YAML कॉन्फ़िगरेशन फ़ाइल की सामग्री देखें जो रिपॉजिटरी में पाई जा सकती है:
terraform:
# आपको इसे एक अद्वितीय स्ट्रिंग में बदलना होगा जो एक मान्य Heroku ऐप नाम है
heroku_app_name: best-of-cors
# यहाँ अपना Cloudflare API टोकन भरें
cloudflare_api_token: this-is-my-api-token
hosts:
# यह एक मनमाना स्ट्रिंग हो सकता है, लेकिन hosts के प्रत्यक्ष वंशज के रूप में अद्वितीय होना चाहिए
testing:
host_domain: 127.0.0.1:8080
redirect_domain: google.com
targets:
- enable-cors.org
- example.com
आपको तैनाती के लिए इस प्रारूप की एक नई कॉन्फ़िगरेशन YAML फ़ाइल बनानी होगी।
terraform अनुभाग के अंतर्गत, आप heroku_app_name को एक Heroku-अनुपालक ऐप नाम पर सेट करना चाहेंगे जो आपके खाते के लिए अद्वितीय है। आप ऊपर दिए गए अनुभाग में उत्पन्न अपनी Cloudflare API कुंजी को cloudflare_api_token निर्देश के तहत जोड़ना चाहेंगे।
hosts अनुभाग वह जगह है जहाँ हम उन डोमेन को परिभाषित करते हैं जिन पर हम उम्मीद करते हैं कि of-CORS ट्रैफ़िक प्राप्त करेगा और जब वेब विज़िटर आएं तो क्या करना है। मान लें कि हम एक ऐसी कंपनी को लक्षित कर रहे हैं और हम जानते हैं कि उनके दो आंतरिक डोमेन हैं (myinternalcorp1.com और myinternalcorp2.com). हमने आगे बढ़कर डोमेन yinternalcorp1.com खरीद लिया, इस उम्मीद के साथ कि कर्मचारी गलती से इस पर आएंगे। इस मामले में हम hosts को निम्नानुसार कॉन्फ़िगर करना चाहेंगे:
hosts:
testing_1:
host_domain: yinternalcorp1.com
redirect_domain: myinternalcorp1.com
targets:
- myinternalcorp1.com
- myinternalcorp2.com
यहाँ host_domain वह डोमेन है जहाँ आप ट्रैफ़िक प्राप्त करने की उम्मीद करते हैं (अर्थात, खरीदा गया डोमेन)। redirect_domain उस डोमेन को परिभाषित करता है जहाँ पीड़ितों को पेलोड लॉन्च होने के बाद रीडायरेक्ट किया जाना चाहिए। targets उन डोमेन को निर्दिष्ट करता है जिनके विरुद्ध पेलोड लॉन्च किया जाना चाहिए जब पीड़ित of-CORS पर आता है।
मान लें कि हमने yinternalcorp2.com भी खरीदा और of-CORS को कॉन्फ़िगर करना चाहते हैं ताकि जब यह विज़िट किया जाए तो हमले लॉन्च हों। hosts अनुभाग को फिर निम्नानुसार अपडेट किया जा सकता है:
hosts:
testing_1:
host_domain: yinternalcorp1.com
redirect_domain: myinternalcorp1.com
targets:
- myinternalcorp1.com
- myinternalcorp2.com
testing_2:
host_domain: yinternalcorp2.com
redirect_domain: myinternalcorp2.com
targets:
- myinternalcorp1.com
- myinternalcorp2.com
अब यदि कोई पीड़ित गलती से yinternalcorp1.com या yinternalcorp2.com पर आता है, तो myinternalcorp1.com और myinternalcorp2.com पर CORS गलत कॉन्फ़िगरेशन की गणना के लिए पेलोड लॉन्च किए जाएंगे और पीड़ित का ब्राउज़र बाद में सही डोमेन पर रीडायरेक्ट हो जाएगा।
Docker विकल्प के साथ आपको Terraform, Heroku, Python स्थापित करने की आवश्यकता नहीं होगी। बस अपनी yaml फ़ाइल के सही पथ के साथ यह कमांड चलाएँ:
docker run -v $PWD/config.yml:/config.yml -it --rm trufflesecurity/of-cors