Reverse Tab Nabbing

Support HackTricks

Description

एक स्थिति में जहां एक हमलावर href तर्क को <a टैग के साथ नियंत्रित कर सकता है जिसमें विशेषता target="_blank" rel="opener" है जिसे एक पीड़ित द्वारा क्लिक किया जाएगा, हमलावर इस लिंक को एक वेब पर इंगित करता है जो उसके नियंत्रण में है (एक दुष्ट वेबसाइट)। फिर, जब पीड़ित लिंक पर क्लिक करता है और हमलावर की वेबसाइट तक पहुंचता है, तो यह दुष्ट वेबसाइट window.opener जावास्क्रिप्ट ऑब्जेक्ट के माध्यम से मूल पृष्ठ को नियंत्रित करने में सक्षम होगी। यदि पृष्ठ में rel="opener" नहीं है लेकिन target="_blank" है और इसमें rel="noopener" नहीं है तो यह भी कमजोर हो सकता है।

इस व्यवहार का दुरुपयोग करने का एक सामान्य तरीका होगा मूल वेब का स्थान बदलना window.opener.location = https://attacker.com/victim.html एक ऐसी वेब पर जो हमलावर द्वारा नियंत्रित है जो मूल एक की तरह दिखती है, ताकि यह मूल वेबसाइट के लॉगिन फॉर्म की नकल कर सके और उपयोगकर्ता से क्रेडेंशियल्स मांग सके।

हालांकि, ध्यान दें कि चूंकि हमलावर अब मूल वेबसाइट के विंडो ऑब्जेक्ट को नियंत्रित कर सकता है, वह इसे अन्य तरीकों से गुप्त हमलों को अंजाम देने के लिए दुरुपयोग कर सकता है (शायद जावास्क्रिप्ट इवेंट्स को संशोधित करके जानकारी को उसके द्वारा नियंत्रित सर्वर पर एक्स-फिल्ट्रेट करना?)

Overview

जब रोकथाम विशेषता का उपयोग नहीं किया जाता है तो माता-पिता और बच्चे के पृष्ठों के बीच लिंक:

जब रोकथाम विशेषता का उपयोग किया जाता है तो माता-पिता और बच्चे के पृष्ठों के बीच लिंक:

Examples

एक फ़ोल्डर में निम्नलिखित पृष्ठ बनाएं और python3 -m http.server के साथ एक वेब सर्वर चलाएं फिर, एक्सेस http://127.0.0.1:8000/vulnerable.html, क्लिक करें लिंक पर और नोट करें कि मूल वेबसाइट यूआरएल कैसे बदलता है

vulnerable.html
<!DOCTYPE html>
<html>
<body>
<h1>Victim Site</h1>
<a href="http://127.0.0.1:8000/malicious.html" target="_blank" rel="opener">Controlled by the attacker</a>
</body>
</html>
malicious.html
<!DOCTYPE html>
<html>
<body>
<script>
window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
</script>
</body>
</html>
malicious_redir.html
<!DOCTYPE html>
<html>
<body>
<h1>New Malicious Site</h1>
</body>
</html>

Accessible properties

उस परिदृश्य में जहां cross-origin पहुँच होती है (विभिन्न डोमेन के बीच पहुँच), opener जावास्क्रिप्ट ऑब्जेक्ट संदर्भ द्वारा संदर्भित window जावास्क्रिप्ट क्लास उदाहरण की विशेषताएँ, जिन्हें एक दुर्भावनापूर्ण साइट द्वारा पहुँचा जा सकता है, निम्नलिखित तक सीमित हैं:

  • opener.closed: इस विशेषता का उपयोग यह निर्धारित करने के लिए किया जाता है कि क्या एक विंडो बंद हो गई है, जो एक बूलियन मान लौटाती है।

  • opener.frames: यह विशेषता वर्तमान विंडो के भीतर सभी iframe तत्वों तक पहुँच प्रदान करती है।

  • opener.length: वर्तमान विंडो में मौजूद iframe तत्वों की संख्या इस विशेषता द्वारा लौटाई जाती है।

  • opener.opener: इस विशेषता के माध्यम से वर्तमान विंडो को खोलने वाली विंडो का संदर्भ प्राप्त किया जा सकता है।

  • opener.parent: यह विशेषता वर्तमान विंडो के माता-पिता विंडो को लौटाती है।

  • opener.self: इस विशेषता द्वारा वर्तमान विंडो स्वयं तक पहुँच प्रदान की जाती है।

  • opener.top: यह विशेषता सबसे ऊपरी ब्राउज़र विंडो को लौटाती है।

हालांकि, उन उदाहरणों में जहां डोमेन समान होते हैं, दुर्भावनापूर्ण साइट को window जावास्क्रिप्ट ऑब्जेक्ट संदर्भ द्वारा उजागर की गई सभी विशेषताओं तक पहुँच प्राप्त होती है।

Prevention

रोकथाम की जानकारी HTML5 Cheat Sheet में दस्तावेज़ित की गई है।

References

Support HackTricks

Last updated