<summary><strong>AWS हैकिंग सीखें शून्य से लेकर हीरो तक</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ!</strong></summary>
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) का संग्रह
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) को **फॉलो करें**.
* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स शेयर करें.
**Cross-site request forgery** (जिसे CSRF भी कहा जाता है) एक वेब सुरक्षा संवेदनशीलता है जो हमलावर को उपयोगकर्ताओं को ऐसे कार्य करने के लिए **प्रेरित करने की अनुमति देती है जो वे करना नहीं चाहते**।\
यह **लॉग इन उपयोगकर्ता** को पीड़ित प्लेटफॉर्म पर हमलावर नियंत्रित वेबसाइट तक पहुँचाकर और वहाँ से **निष्पादित** करके किया जाता है, जैसे कि दुर्भावनापूर्ण JS कोड भेजना, फॉर्म भेजना या "इमेज" को **पीड़ित के खाते** में पुनः प्राप्त करना।
CSRF संवेदनशीलता का दुरुपयोग करने के लिए आपको पहले **दुरुपयोग करने के लिए एक प्रासंगिक कार्य खोजना** चाहिए (पासवर्ड या ईमेल बदलना, पीड़ित को आपका अनुसरण करने के लिए बनाना, आपको अधिक विशेषाधिकार देना...). **सत्र केवल कुकीज़ या HTTP Basic Authentication हेडर पर निर्भर करना चाहिए**, कोई अन्य हेडर सत्र को संभालने के लिए उपयोग नहीं किया जा सकता है। और अंत में, अनुरोध पर **अप्रत्याशित पैरामीटर नहीं होने चाहिए**।
इस संवेदनशीलता से बचने के लिए कई **प्रतिरक्षा उपाय** हो सकते हैं।
### **सामान्य रक्षा**
* [**SameSite कुकीज़**](hacking-with-cookies/#samesite): यदि सत्र कुकी इस फ्लैग का उपयोग कर रही है, तो आप मनमानी वेब साइटों से कुकी भेजने में सक्षम नहीं हो सकते हैं।
* [**Cross-origin resource sharing**](cors-bypass.md): आपको जिस प्रकार के HTTP अनुरोध को प्रासंगिक कार्य का दुरुपयोग करने के लिए प्रदर्शन करना है, उसके आधार पर आपको **पीड़ित साइट की CORS नीति** को ध्यान में रखना चाहिए। _ध्यान दें कि CORS नीति तब प्रभावित नहीं होगी जब आप केवल GET अनुरोध भेजना चाहते हैं या फॉर्म से POST अनुरोध और आपको प्रतिक्रिया पढ़ने की आवश्यकता नहीं है।_
* कार्य को अधिकृत करने के लिए **पासवर्ड** मांगें।
* एक **कैप्चा** हल करें।
* **Referrer** या **Origin** हेडर्स पढ़ें। यदि एक regex का उपयोग किया जाता है तो यह उदाहरण के साथ बायपास किया जा सकता है:
* http://mal.net?orig=http://example.com (url के साथ समाप्त होता है)
* http://example.com.mal.net (url के साथ शुरू होता है)
* Post या Get अनुरोध के **पैरामीटर्स के नाम को संशोधित** करें।
* प्रत्येक सत्र में एक **CSRF टोकन** का उपयोग करें। इस टोकन को अनुरोध के अंदर भेजना होगा ताकि कार्य की पुष्टि की जा सके। इस टोकन को CORS के साथ सुरक्षित किया जा सकता है।
शायद आप जिस फॉर्म का दुरुपयोग करना चाहते हैं वह एक **POST अनुरोध को CSRF टोकन के साथ भेजने के लिए तैयार है लेकिन**, आपको **जांचना चाहिए** कि क्या एक **GET** भी **मान्य** है और यदि जब आप GET अनुरोध भेजते हैं तो **CSRF टोकन अभी भी मान्य किया जा रहा है**।
कुछ एप्लिकेशन सही ढंग से **टोकन को मान्य करते हैं जब वह मौजूद होता है लेकिन मान्यता को छोड़ देते हैं यदि टोकन छोड़ दिया जाता है**।\
इस स्थिति में, हमलावर **पूरे पैरामीटर को हटा सकता है** जिसमें टोकन होता है (केवल इसका मूल्य नहीं) ताकि मान्यता को बायपास किया जा सके और CSRF हमला दिया जा सके।
कुछ एप्लिकेशन **यह मान्य नहीं करते कि टोकन उसी सत्र से संबंधित है** जैसा कि उपयोगकर्ता जो अनुरोध कर रहा है। इसके बजाय, एप्लिकेशन **एक वैश्विक पूल का रखरखाव करता है जिसमें उसने टोकन जारी किए हैं और इस पूल में दिखाई देने वाले किसी भी टोकन को स्वीकार करता है**।\
इस स्थिति में, हमलावर अपने खुद के खाते का उपयोग करके एप्लिकेशन में लॉग इन कर सकता है, **एक मान्य टोकन प्राप्त कर सकता है**, और फिर उस टोकन को CSRF हमले में पीड़ित उपयोगकर्ता को खिला सकता है।
ध्यान दें कि यदि **csrf token सत्र कुकी से संबंधित है तो यह हमला काम नहीं करेगा** क्योंकि आपको पीड़ित को अपना सत्र सेट करना होगा, और इसलिए आप खुद पर हमला कर रहे होंगे।
[**इस**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests) के अनुसार, **प्रीफ्लाइट** अनुरोधों से बचने के लिए **POST** विधि का उपयोग करते समय ये Content-Type मान स्वीकार्य हैं:
हालांकि, ध्यान दें कि **सर्वर का तर्क** Content-Type के उपयोग पर निर्भर कर सकता है इसलिए आपको उल्लिखित मानों और अन्य जैसे **`application/json`**, **`text/xml`**, **`application/xml`** को भी आजमाना चाहिए।
जैसा कि आप पहले से जानते हैं, आप HTML फॉर्म के माध्यम से **`application/json`** के Content-Type के साथ POST अनुरोध नहीं भेज सकते, और यदि आप **`XMLHttpRequest`** के माध्यम से ऐसा करने की कोशिश करते हैं तो पहले एक **preflight** अनुरोध भेजा जाता है।\
हालांकि, आप \*\*`text/plain` और `application/x-www-form-urlencoded` \*\* content types का उपयोग करके JSON डेटा भेजने की कोशिश कर सकते हैं, बस यह जांचने के लिए कि क्या बैकएंड Content-Type की परवाह किए बिना डेटा का उपयोग कर रहा है।\
आप **`enctype="text/plain"`** सेट करके `Content-Type: text/plain` का उपयोग करते हुए एक फॉर्म भेज सकते हैं।
यदि सर्वर केवल "application/json" content type स्वीकार कर रहा है, तो आप **"text/plain; application/json" content type भेज सकते हैं** बिना preflight अनुरोध को ट्रिगर किए।
आप एक **SWF flash file** का उपयोग करके इस प्रतिबंध को **bypass** करने की भी कोशिश कर सकते हैं। अधिक जानकारी के लिए [**इस पोस्ट को पढ़ें**](https://anonymousyogi.medium.com/json-csrf-csrf-that-none-talks-about-c2bf9a480937)।
[**इस CTF लेखन**](https://github.com/google/google-ctf/tree/master/2023/web-vegsoda/solution) के पहले भाग में बताया गया है कि [Oak के सोर्स कोड](https://github.com/oakserver/oak/blob/main/router.ts#L281) में, एक राउटर को **HEAD अनुरोधों को GET अनुरोधों के रूप में संभालने** के लिए सेट किया गया है जिसमें कोई प्रतिक्रिया शरीर नहीं होता - एक सामान्य समाधान जो केवल Oak तक सीमित नहीं है। HEAD अनुरोधों के लिए एक विशिष्ट हैंडलर के बजाय, उन्हें सीधे **GET हैंडलर को दिया जाता है लेकिन ऐप बस प्रतिक्रिया शरीर को हटा देता है**।
अगर **CSRF टोकन** का उपयोग **रक्षा** के रूप में किया जा रहा है, तो आप [**XSS**](xss-cross-site-scripting/#xss-stealing-csrf-tokens) भेद्यता या [**Dangling Markup**](dangling-markup-html-scriptless-injection/) भेद्यता का दुरुपयोग करके उसे **निष्कासित करने** की कोशिश कर सकते हैं।
xh.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); //to send proper header info (optional, but good to have as it may sometimes not work without this)
यह कोड एक लॉगिन फॉर्म पर ब्रूट फोर्स करने के लिए इस्तेमाल किया जा सकता है जिसमें CSRF टोकन का उपयोग होता है (यह संभावित IP ब्लैकलिस्टिंग को बायपास करने के लिए X-Forwarded-For हेडर का भी उपयोग कर रहा है):
<summary><strong>htARTE (HackTricks AWS Red Team Expert) के साथ शून्य से नायक तक AWS हैकिंग सीखें</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें** तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
* 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में **शामिल हों** या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)** का अनुसरण करें.**
* **HackTricks** और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github रेपोज़ में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें.