
टाइपोस्क्वाटिंग डोमेन और ब्राउज़र सेवा वर्कर्स का उपयोग करके बग बाउंटी लक्ष्यों के आंतरिक नेटवर्क की जांच करने के लिए स्वचालित 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
of-CORS की तैनाती Terraform पर निर्भर करती है। आप यहाँ Terraform स्थापित करने के निर्देशों का पालन कर सकते हैं। एक बार स्थापित होने के बाद, terraform बाइनरी आपके सिस्टम के PATH पर उपलब्ध होने की उम्मीद है।
of-CORS की तैनाती Python3 पर भी निर्भर करती है। सुनिश्चित करें कि यह स्थापित है और आपके सिस्टम के PATH पर उपलब्ध है।
हमारे क्लाउड प्रदाताओं के लिए प्रमाणीकरण का ध्यान रखने और of-CORS कॉन्फ़िगरेशन फ़ाइल तैयार होने के बाद, हम अब तैनाती पर आगे बढ़ सकते हैं।
सबसे पहले हमें Terraform को आरंभ करना होगा। यह कमांड स्रोत कोड रूट निर्देशिका से चलाया जाना चाहिए:
cd terraform && terraform init && cd ../
मान लें कि हमारी कॉन्फ़िगरेशन फ़ाइल /tmp/of_cors_config.yml पर स्थित है। हम सभी of-CORS बुनियादी ढाँचे को चालू करने के लिए निम्नलिखित कमांड चलाएंगे (ध्यान दें कि यह मानता है कि कमांड bash में चलाए जा रहे हैं)। इस कमांड को चलने में 5-10 मिनट लग सकते हैं, कृपया धैर्य रखें!
कृपया यह भी ध्यान दें कि वास्तव में बड़ी गणनाओं के लिए, Heroku अक्सर संसाधनों से बाहर हो जाता है। यह एक ज्ञात समस्या है, और हमें इसके समाधान पर आपकी मदद पसंद आएगी। संभावित भविष्य के सुधारों में स्वयं गणनाएँ अपलोड करने में सक्षम होना, Heroku Dyn का आकार बढ़ाना, या Sublist3r या किसी अन्य गणना उपकरण पर स्विच करना शामिल है।
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
CONFIG_FILE=/tmp/of_cors_config.yml make deploy_and_configure
कृपया ध्यान दें - एक रेस कंडीशन हो सकती है जब Heroku बुनियादी ढाँचा स्पिन अप होता है और उसके भीतर तुरंत एक कंसोल एक्सेस किया जाता है। यदि यह अंतिम make deploy_and_configure कमांड विफल हो जाता है, तो कृपया कुछ मिनट प्रतीक्षा करें और इसे फिर से चलाने का प्रयास करें।
deploy_and_configure कमांड के चलने के बाद अब आपके पास होगा...
of-CORS उम्मीदवार आंतरिक CORS गलत कॉन्फ़िगरेशन डोमेन से भरा हुआ हैof-CORS तैनाती को ट्रैफ़िक प्राप्त करने के लिए तैयार होने के लिए अंतिम चीज जो हमें करने की आवश्यकता है, वह है आपके द्वारा खरीदे गए डोमेन नामों को Cloudflare को उनके आधिकारिक DNS सर्वर के रूप में उपयोग करने के लिए कॉन्फ़िगर करना। Cloudflare के पास यहाँ करने के लिए एक विस्तृत गाइड है।
यह पुष्टि करने के लिए निम्नलिखित चरणों से गुज़रें कि आपका सॉफ़्टवेयर सही ढंग से चल रहा है। इस अनुभाग के प्रयोजन के लिए हम hackersofhollywood.com डोमेन के तहत सेट अप किए गए of-CORS के एक इंस्टेंस का उपयोग करेंगे।
पहले जाँचें कि हमारे डोमेन के SOA रिकॉर्ड Cloudflare की ओर इशारा करते हैं:
dig soa <domain>
जैसा कि नीचे दिखाया गया है, hackersofhollywood.com के SOA रिकॉर्ड सही ढंग से Cloudflare नेमसर्वर की ओर इशारा करते हैं:

फिर हम Cloudflare खाते की समीक्षा करते हैं ताकि पुष्टि हो सके कि DNS रिकॉर्ड hackersofhollywood.com और *.hackersofhollywood.com दोनों के लिए CNAME सामग्री के साथ Heroku डोमेन की ओर इशारा करते हुए सेट अप किए गए हैं। यह Cloudflare वेब UI के DNS अनुभाग के माध्यम से किया जाता है:

अगला कदम यह पुष्टि करना है कि Heroku इन दो CNAME रिकॉर्ड के माध्यम से ट्रैफ़िक प्राप्त करने के लिए कॉन्फ़िगर किया गया है। यह Heroku वेब UI में Settings -> Domains के माध्यम से किया जा सकता है:

निश्चित रूप से हम Heroku में उपयुक्त DNS लक्ष्यों के साथ कॉन्फ़िगर किए गए दो डोमेन नाम देखते हैं और ये लक्ष्य Cloudflare के CNAME रिकॉर्ड में सही ढंग से परिलक्षित होते हैं।
फिर हम of-CORS के परिणाम दर्शक पृष्ठ पर एक प्रमाणित ब्राउज़र सत्र खोलने के लिए निम्नलिखित कमांड चला सकते हैं:
CONFIG_FILE=<path_to_config_file> make open_heroku_console
यह आपके ब्राउज़र में एक खाली डैशबोर्ड लाना चाहिए:

अंत में हम परीक्षण कर सकते हैं कि CORS गलत कॉन्फ़िगरेशन जाँच सफलतापूर्वक लॉन्च हो रही है। अपने कॉन्फ़िगरेशन में से किसी एक के आधार डोमेन पर एक ब्राउज़र खोलें (हमारे उदाहरण में, https://hackersofhollywood.com) और पुष्टि करें कि पृष्ठ कुछ सेकंड के बाद रीडायरेक्ट होता है:

अब डैशबोर्ड पृष्ठ पर वापस नेविगेट करें और Success फ़िल्टर को Unknown पर फ़िल्टर करने के लिए बदलें और Submit Query बटन दबाएँ। अब आपको बहुत सारे परिणाम दिखाई देने चाहिए:

आपका जाल सेट है! अब बस आराम से बैठें और अपने पीड़ितों के आपके स्वादिष्ट छोटे डोमेन पर ठोकर खाने की प्रतीक्षा करें।
एक प्रमाणित ब्राउज़र सत्र में सभी परिणामों को देखने और क्वेरी करने के लिए निम्नलिखित कमांड का उपयोग किया जा सकता है:
CONFIG_FILE=<path_to_config_file> make open_heroku_console
of-CORS कॉन्फ़िगरेशन फ़ाइल को उन डोमेन के लचीले जोड़ और हटाने का समर्थन करने के लिए डिज़ाइन किया गया है जिनके लिए हमले लॉन्च किए जाते हैं। बस अपनी कॉन्फ़िगरेशन फ़ाइल में hosts अनुभाग की सामग्री अपडेट करें और प्रावधान स्क्रिप्ट को फिर से चलाएँ:
source venv/bin/activate
CONFIG_FILE=/tmp/of_cors_config.yml make deploy_and_configure