mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/clickjacking.md'] to hi
This commit is contained in:
parent
ef0564afec
commit
55b8b1632e
@ -12,10 +12,10 @@
|
|||||||
|
|
||||||
### Populate form with Drag\&Drop
|
### Populate form with Drag\&Drop
|
||||||
|
|
||||||
यदि आपको उपयोगकर्ता से **एक फॉर्म भरवाने** की आवश्यकता है लेकिन आप सीधे उससे कुछ विशिष्ट जानकारी (जैसे ईमेल और या विशिष्ट पासवर्ड जो आप जानते हैं) लिखने के लिए नहीं कहना चाहते, तो आप बस उससे कुछ **Drag\&Drop** करने के लिए कह सकते हैं जो आपके नियंत्रित डेटा को लिखेगा जैसे कि [**इस उदाहरण**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/) में।
|
यदि आपको उपयोगकर्ता से **एक फॉर्म भरवाने** की आवश्यकता है लेकिन आप सीधे उससे कुछ विशिष्ट जानकारी (जैसे ईमेल और या विशिष्ट पासवर्ड जो आप जानते हैं) लिखने के लिए नहीं कहना चाहते, तो आप बस उससे **Drag\&Drop** करने के लिए कह सकते हैं जो आपके नियंत्रित डेटा को लिखेगा जैसे कि [**इस उदाहरण**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/) में।
|
||||||
|
|
||||||
### Basic Payload
|
### Basic Payload
|
||||||
```markup
|
```css
|
||||||
<style>
|
<style>
|
||||||
iframe {
|
iframe {
|
||||||
position:relative;
|
position:relative;
|
||||||
@ -35,7 +35,7 @@ z-index: 1;
|
|||||||
<iframe src="https://vulnerable.com/email?email=asd@asd.asd"></iframe>
|
<iframe src="https://vulnerable.com/email?email=asd@asd.asd"></iframe>
|
||||||
```
|
```
|
||||||
### मल्टीस्टेप पेलोड
|
### मल्टीस्टेप पेलोड
|
||||||
```markup
|
```css
|
||||||
<style>
|
<style>
|
||||||
iframe {
|
iframe {
|
||||||
position:relative;
|
position:relative;
|
||||||
@ -59,7 +59,7 @@ left:210px;
|
|||||||
<iframe src="https://vulnerable.net/account"></iframe>
|
<iframe src="https://vulnerable.net/account"></iframe>
|
||||||
```
|
```
|
||||||
### Drag\&Drop + Click payload
|
### Drag\&Drop + Click payload
|
||||||
```markup
|
```css
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<style>
|
<style>
|
||||||
@ -89,25 +89,34 @@ background: #F00;
|
|||||||
```
|
```
|
||||||
### XSS + Clickjacking
|
### XSS + Clickjacking
|
||||||
|
|
||||||
यदि आपने एक **XSS हमला पहचाना है जो उपयोगकर्ता को** किसी तत्व पर **क्लिक करने की आवश्यकता है** ताकि **XSS को ट्रिगर** किया जा सके और पृष्ठ **क्लिकजैकिंग के लिए संवेदनशील** है, तो आप इसका दुरुपयोग करके उपयोगकर्ता को बटन/लिंक पर क्लिक करने के लिए धोखा दे सकते हैं।\
|
यदि आपने एक **XSS हमले की पहचान की है जो उपयोगकर्ता को** किसी तत्व पर **क्लिक करने की आवश्यकता है** ताकि **XSS को ट्रिगर** किया जा सके और पृष्ठ **क्लिकजैकिंग के लिए संवेदनशील** है, तो आप इसका दुरुपयोग कर सकते हैं ताकि उपयोगकर्ता को बटन/लिंक पर क्लिक करने के लिए धोखा दिया जा सके।\
|
||||||
उदाहरण:\
|
उदाहरण:\
|
||||||
आपने खाते के कुछ निजी विवरणों में एक **स्वयं XSS** पाया (विवरण जो **केवल आप सेट और पढ़ सकते हैं**)। इन विवरणों को सेट करने के लिए **फॉर्म** वाला पृष्ठ **क्लिकजैकिंग** के लिए **संवेदनशील** है और आप **GET पैरामीटर** के साथ **फॉर्म** को **पूर्व-जनित** कर सकते हैं।\
|
आपने खाते के कुछ निजी विवरणों में एक **स्वयं XSS** पाया (विवरण जो **केवल आप सेट और पढ़ सकते हैं**)। इन विवरणों को सेट करने के लिए **फॉर्म** वाला पृष्ठ **क्लिकजैकिंग के लिए संवेदनशील** है और आप **GET पैरामीटर** के साथ **फॉर्म** को **पूर्व-जनित** कर सकते हैं।\
|
||||||
एक हमलावर उस पृष्ठ के लिए एक **क्लिकजैकिंग** हमला तैयार कर सकता है **फॉर्म** को **XSS पेलोड** के साथ **पूर्व-जनित** करके और **उपयोगकर्ता** को फॉर्म को **सबमिट** करने के लिए **धोखा** देकर। तो, **जब फॉर्म सबमिट किया जाता है** और मानों को संशोधित किया जाता है, तो **उपयोगकर्ता XSS को निष्पादित करेगा**।
|
एक हमलावर उस पृष्ठ के लिए एक **क्लिकजैकिंग** हमले की तैयारी कर सकता है **फॉर्म** को **XSS पेलोड** के साथ **पूर्व-जनित** करके और **उपयोगकर्ता** को **फॉर्म सबमिट** करने के लिए **धोखा** देकर। तो, **जब फॉर्म सबमिट किया जाता है** और मानों को संशोधित किया जाता है, तो **उपयोगकर्ता XSS को निष्पादित करेगा**।
|
||||||
|
|
||||||
## Clickjacking को कम करने की रणनीतियाँ
|
### DoubleClickjacking
|
||||||
|
|
||||||
### क्लाइंट-साइड डिफेंस
|
पहले [इस पोस्ट में समझाया गया](https://securityaffairs.com/172572/hacking/doubleclickjacking-clickjacking-on-major-websites.html), यह तकनीक पीड़ित से एक कस्टम पृष्ठ के बटन पर डबल क्लिक करने के लिए कहेगी जो एक विशिष्ट स्थान पर रखा गया है, और माउसडाउन और ऑनक्लिक घटनाओं के बीच समय के अंतर का उपयोग करके पीड़ित पृष्ठ को डबल क्लिक के दौरान लोड करेगी ताकि **पीड़ित वास्तव में पीड़ित पृष्ठ में एक वैध बटन पर क्लिक करे**।
|
||||||
|
|
||||||
|
एक उदाहरण इस वीडियो में देखा जा सकता है: [https://www.youtube.com/watch?v=4rGvRRMrD18](https://www.youtube.com/watch?v=4rGvRRMrD18)
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> यह तकनीक उपयोगकर्ता को पीड़ित पृष्ठ में 1 स्थान पर क्लिक करने के लिए धोखा देने की अनुमति देती है, जिससे क्लिकजैकिंग के खिलाफ हर सुरक्षा को बायपास किया जा सकता है। इसलिए हमलावर को **संवेदनशील क्रियाओं को खोजने की आवश्यकता है जो केवल 1 क्लिक के साथ की जा सकती हैं, जैसे OAuth प्रॉम्प्ट्स जो अनुमतियों को स्वीकार करते हैं**।
|
||||||
|
|
||||||
|
## Strategies to Mitigate Clickjacking
|
||||||
|
|
||||||
|
### Client-Side Defenses
|
||||||
|
|
||||||
क्लाइंट साइड पर निष्पादित स्क्रिप्ट्स क्लिकजैकिंग को रोकने के लिए क्रियाएँ कर सकती हैं:
|
क्लाइंट साइड पर निष्पादित स्क्रिप्ट्स क्लिकजैकिंग को रोकने के लिए क्रियाएँ कर सकती हैं:
|
||||||
|
|
||||||
- सुनिश्चित करना कि एप्लिकेशन विंडो मुख्य या शीर्ष विंडो है।
|
- सुनिश्चित करना कि एप्लिकेशन विंडो मुख्य या शीर्ष विंडो है।
|
||||||
- सभी फ्रेम को दृश्य बनाना।
|
- सभी फ्रेम को दृश्यमान बनाना।
|
||||||
- अदृश्य फ्रेम पर क्लिक करने से रोकना।
|
- अदृश्य फ्रेम पर क्लिक को रोकना।
|
||||||
- संभावित क्लिकजैकिंग प्रयासों के लिए उपयोगकर्ताओं का पता लगाना और चेतावनी देना।
|
- संभावित क्लिकजैकिंग प्रयासों के लिए उपयोगकर्ताओं का पता लगाना और चेतावनी देना।
|
||||||
|
|
||||||
हालांकि, ये फ्रेम-बस्टिंग स्क्रिप्ट्स को दरकिनार किया जा सकता है:
|
हालांकि, ये फ्रेम-बस्टिंग स्क्रिप्ट्स को बायपास किया जा सकता है:
|
||||||
|
|
||||||
- **ब्राउज़रों की सुरक्षा सेटिंग्स:** कुछ ब्राउज़र अपनी सुरक्षा सेटिंग्स या JavaScript समर्थन की कमी के आधार पर इन स्क्रिप्ट्स को ब्लॉक कर सकते हैं।
|
- **ब्राउज़रों की सुरक्षा सेटिंग्स:** कुछ ब्राउज़र अपनी सुरक्षा सेटिंग्स या जावास्क्रिप्ट समर्थन की कमी के आधार पर इन स्क्रिप्ट्स को ब्लॉक कर सकते हैं।
|
||||||
- **HTML5 iframe `sandbox` विशेषता:** एक हमलावर `allow-forms` या `allow-scripts` मानों के साथ `sandbox` विशेषता सेट करके फ्रेम बस्टर स्क्रिप्ट्स को निष्क्रिय कर सकता है बिना `allow-top-navigation` के। यह iframe को यह सत्यापित करने से रोकता है कि क्या यह शीर्ष विंडो है, उदाहरण के लिए,
|
- **HTML5 iframe `sandbox` विशेषता:** एक हमलावर `allow-forms` या `allow-scripts` मानों के साथ `sandbox` विशेषता सेट करके फ्रेम बस्टर स्क्रिप्ट्स को निष्क्रिय कर सकता है बिना `allow-top-navigation` के। यह iframe को यह सत्यापित करने से रोकता है कि क्या यह शीर्ष विंडो है, उदाहरण के लिए,
|
||||||
```html
|
```html
|
||||||
<iframe
|
<iframe
|
||||||
@ -115,13 +124,13 @@ id="victim_website"
|
|||||||
src="https://victim-website.com"
|
src="https://victim-website.com"
|
||||||
sandbox="allow-forms allow-scripts"></iframe>
|
sandbox="allow-forms allow-scripts"></iframe>
|
||||||
```
|
```
|
||||||
`allow-forms` और `allow-scripts` मान iframe के भीतर क्रियाओं को सक्षम करते हैं जबकि शीर्ष स्तर की नेविगेशन को निष्क्रिय करते हैं। लक्षित साइट की इच्छित कार्यक्षमता सुनिश्चित करने के लिए, हमलों के प्रकार के आधार पर `allow-same-origin` और `allow-modals` जैसे अतिरिक्त अनुमतियों की आवश्यकता हो सकती है। ब्राउज़र कंसोल संदेश यह मार्गदर्शन कर सकते हैं कि कौन सी अनुमतियाँ अनुमति दी जानी चाहिए।
|
`allow-forms` और `allow-scripts` मान iframe के भीतर क्रियाओं को सक्षम करते हैं जबकि शीर्ष स्तर की नेविगेशन को निष्क्रिय करते हैं। लक्षित साइट की इच्छित कार्यक्षमता सुनिश्चित करने के लिए, हमलों के प्रकार के आधार पर `allow-same-origin` और `allow-modals` जैसे अतिरिक्त अनुमतियों की आवश्यकता हो सकती है। ब्राउज़र कंसोल संदेश यह मार्गदर्शन कर सकते हैं कि कौन सी अनुमतियाँ दी जानी चाहिए।
|
||||||
|
|
||||||
### सर्वर-साइड रक्षा
|
### सर्वर-साइड रक्षा
|
||||||
|
|
||||||
#### X-Frame-Options
|
#### X-Frame-Options
|
||||||
|
|
||||||
**`X-Frame-Options` HTTP प्रतिक्रिया हेडर** ब्राउज़रों को `<frame>` या `<iframe>` में पृष्ठ को रेंडर करने की वैधता के बारे में सूचित करता है, जिससे Clickjacking को रोकने में मदद मिलती है:
|
**`X-Frame-Options` HTTP प्रतिक्रिया हेडर** ब्राउज़रों को `<frame>` या `<iframe>` में एक पृष्ठ को रेंडर करने की वैधता के बारे में सूचित करता है, जिससे Clickjacking को रोकने में मदद मिलती है:
|
||||||
|
|
||||||
- `X-Frame-Options: deny` - कोई डोमेन सामग्री को फ्रेम नहीं कर सकता।
|
- `X-Frame-Options: deny` - कोई डोमेन सामग्री को फ्रेम नहीं कर सकता।
|
||||||
- `X-Frame-Options: sameorigin` - केवल वर्तमान साइट सामग्री को फ्रेम कर सकती है।
|
- `X-Frame-Options: sameorigin` - केवल वर्तमान साइट सामग्री को फ्रेम कर सकती है।
|
||||||
@ -130,17 +139,17 @@ sandbox="allow-forms allow-scripts"></iframe>
|
|||||||
|
|
||||||
#### Content Security Policy (CSP) frame-ancestors निर्देश
|
#### Content Security Policy (CSP) frame-ancestors निर्देश
|
||||||
|
|
||||||
**CSP में `frame-ancestors` निर्देश** Clickjacking सुरक्षा के लिए अनुशंसित विधि है:
|
**CSP में `frame-ancestors` निर्देश** Clickjacking सुरक्षा के लिए सलाह दी गई विधि है:
|
||||||
|
|
||||||
- `frame-ancestors 'none'` - `X-Frame-Options: deny` के समान।
|
- `frame-ancestors 'none'` - `X-Frame-Options: deny` के समान।
|
||||||
- `frame-ancestors 'self'` - `X-Frame-Options: sameorigin` के समान।
|
- `frame-ancestors 'self'` - `X-Frame-Options: sameorigin` के समान।
|
||||||
- `frame-ancestors trusted.com` - `X-Frame-Options: allow-from` के समान।
|
- `frame-ancestors trusted.com` - `X-Frame-Options: allow-from` के समान।
|
||||||
|
|
||||||
उदाहरण के लिए, निम्न CSP केवल उसी डोमेन से फ्रेमिंग की अनुमति देता है:
|
उदाहरण के लिए, निम्न CSP केवल समान डोमेन से फ्रेमिंग की अनुमति देता है:
|
||||||
|
|
||||||
`Content-Security-Policy: frame-ancestors 'self';`
|
`Content-Security-Policy: frame-ancestors 'self';`
|
||||||
|
|
||||||
अधिक विवरण और जटिल उदाहरण [frame-ancestors CSP दस्तावेज़](https://w3c.github.io/webappsec-csp/document/#directive-frame-ancestors) और [Mozilla के CSP frame-ancestors दस्तावेज़](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors) में पाए जा सकते हैं।
|
अधिक विवरण और जटिल उदाहरण [frame-ancestors CSP दस्तावेज़](https://w3c.github.io/webappsec-csp/document/#directive-frame-ancestors) और [Mozilla का CSP frame-ancestors दस्तावेज़](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors) में पाए जा सकते हैं।
|
||||||
|
|
||||||
### Content Security Policy (CSP) के साथ `child-src` और `frame-src`
|
### Content Security Policy (CSP) के साथ `child-src` और `frame-src`
|
||||||
|
|
||||||
@ -170,9 +179,9 @@ Content-Security-Policy: child-src 'self' https://trusted-website.com;
|
|||||||
- फ़ॉलबैक व्यवहार: यदि frame-src अनुपस्थित है, तो फ़्रेम के लिए child-src को फ़ॉलबैक के रूप में उपयोग किया जाता है। यदि दोनों अनुपस्थित हैं, तो default-src का उपयोग किया जाता है।
|
- फ़ॉलबैक व्यवहार: यदि frame-src अनुपस्थित है, तो फ़्रेम के लिए child-src को फ़ॉलबैक के रूप में उपयोग किया जाता है। यदि दोनों अनुपस्थित हैं, तो default-src का उपयोग किया जाता है।
|
||||||
- सख्त स्रोत परिभाषा: शोषण को रोकने के लिए निर्देशों में केवल विश्वसनीय स्रोतों को शामिल करें।
|
- सख्त स्रोत परिभाषा: शोषण को रोकने के लिए निर्देशों में केवल विश्वसनीय स्रोतों को शामिल करें।
|
||||||
|
|
||||||
#### जावास्क्रिप्ट फ़्रेम-ब्रेकिंग स्क्रिप्ट्स
|
#### JavaScript फ़्रेम-ब्रेकिंग स्क्रिप्ट्स
|
||||||
|
|
||||||
हालांकि यह पूरी तरह से सुरक्षित नहीं है, जावास्क्रिप्ट-आधारित फ़्रेम-बस्टिंग स्क्रिप्ट्स का उपयोग एक वेब पृष्ठ को फ़्रेम किए जाने से रोकने के लिए किया जा सकता है। उदाहरण:
|
हालांकि यह पूरी तरह से सुरक्षित नहीं है, JavaScript-आधारित फ़्रेम-बस्टिंग स्क्रिप्ट्स का उपयोग एक वेब पृष्ठ को फ़्रेम में आने से रोकने के लिए किया जा सकता है। उदाहरण:
|
||||||
```javascript
|
```javascript
|
||||||
if (top !== self) {
|
if (top !== self) {
|
||||||
top.location = self.location
|
top.location = self.location
|
||||||
|
Loading…
x
Reference in New Issue
Block a user