DOM XSS
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
DOM कमजोरियाँ तब होती हैं जब हमलावर-नियंत्रित स्रोतों (जैसे location.search
, document.referrer
, या document.cookie
) से डेटा असुरक्षित रूप से सिंक में स्थानांतरित किया जाता है। सिंक वे फ़ंक्शन या ऑब्जेक्ट हैं (जैसे, eval()
, document.body.innerHTML
) जो यदि उन्हें दुर्भावनापूर्ण डेटा दिया जाए तो हानिकारक सामग्री को निष्पादित या प्रदर्शित कर सकते हैं।
स्रोत वे इनपुट हैं जिन्हें हमलावरों द्वारा हेरफेर किया जा सकता है, जिसमें URL, कुकीज़, और वेब संदेश शामिल हैं।
सिंक संभावित रूप से खतरनाक एंडपॉइंट हैं जहाँ दुर्भावनापूर्ण डेटा प्रतिकूल प्रभावों का कारण बन सकता है, जैसे कि स्क्रिप्ट निष्पादन।
जोखिम तब उत्पन्न होता है जब डेटा एक स्रोत से एक सिंक में उचित सत्यापन या सफाई के बिना प्रवाहित होता है, जिससे XSS जैसे हमलों की अनुमति मिलती है।
आप स्रोतों और सिंक की अधिक अद्यतन सूची पा सकते हैं https://github.com/wisec/domxsswiki/wiki
सामान्य स्रोत:
सामान्य सिंक:
location
eval()
scriptElement.src
add()
location.host
Function() constructor
scriptElement.text
after()
location.hostname
setTimeout()
scriptElement.textContent
append()
location.href
setInterval()
scriptElement.innerText
animate()
location.pathname
setImmediate()
someDOMElement.setAttribute()
insertAfter()
location.search
execCommand()
someDOMElement.search
insertBefore()
location.protocol
execScript()
someDOMElement.text
before()
location.assign()
msSetImmediate()
someDOMElement.textContent
html()
location.replace()
range.createContextualFragment()
someDOMElement.innerText
prepend()
open()
crypto.generateCRMFRequest()
someDOMElement.outerText
replaceAll()
XMLHttpRequest.open()
FileReader.readAsArrayBuffer()
someDOMElement.name
wrap()
XMLHttpRequest.send()
FileReader.readAsBinaryString()
someDOMElement.target
wrapInner()
jQuery.ajax()
FileReader.readAsDataURL()
someDOMElement.method
wrapAll()
$.ajax()
FileReader.readAsText()
someDOMElement.type
has()
XMLHttpRequest.setRequestHeader()
FileReader.root.getFile()
someDOMElement.cssText
init()
XMLHttpRequest.open()
FileReader.root.getFile()
someDOMElement.codebase
index()
jQuery.globalEval()
someDOMElement.href
someDOMElement.outerHTML
$.parseHTML()
localStorage.setItem()
document.evaluate()
document.writeln()
$.parseJSON()
**[**`सेवा का इनकार`**](dom-xss.md#denial-of-service)**
someDOMElement.evaluate()
document.title
requestFileSystem()
document.implementation.createHTMLDocument()
document.cookie
executeSql()
postMessage()
``
``
innerHTML
सिंक किसी भी आधुनिक ब्राउज़र पर script
तत्वों को स्वीकार नहीं करता है, न ही svg onload
घटनाएँ चलेंगी। इसका मतलब है कि आपको img
या iframe
जैसे वैकल्पिक तत्वों का उपयोग करना होगा।
इस प्रकार का XSS शायद खोजने के लिए सबसे कठिन है, क्योंकि आपको JS कोड के अंदर देखना होगा, यह देखना होगा कि क्या यह किसी वस्तु का उपयोग कर रहा है जिसका मूल्य आप नियंत्रित करते हैं, और उस मामले में, यह देखना होगा कि क्या इसे मनमाने JS को निष्पादित करने के लिए दुरुपयोग करने का कोई तरीका है।
संभावित सिंक तक पहुँचने वाले हर डेटा की जाँच करने के लिए ब्राउज़र एक्सटेंशन: https://github.com/kevin-mizu/domloggerpp
से: https://portswigger.net/web-security/dom-based/open-redirection
DOM में ओपन रीडायरेक्ट कमजोरियाँ तब होती हैं जब एक स्क्रिप्ट डेटा लिखती है, जिसे एक हमलावर नियंत्रित कर सकता है, एक सिंक में जो डोमेन के बीच नेविगेशन शुरू करने में सक्षम है।
यह समझना महत्वपूर्ण है कि मनमाना कोड निष्पादित करना, जैसे कि javascript:alert(1)
, संभव है यदि आपके पास उस URL की शुरुआत पर नियंत्रण है जहाँ रीडायरेक्ट होता है।
सिंक:
From: https://portswigger.net/web-security/dom-based/cookie-manipulation
DOM-आधारित कुकी-हेरफेर कमजोरियाँ तब होती हैं जब एक स्क्रिप्ट डेटा को शामिल करती है, जिसे हमलावर द्वारा नियंत्रित किया जा सकता है, कुकी के मान में। यदि कुकी का उपयोग साइट के भीतर किया जाता है, तो यह कमजोरी वेबपेज के अप्रत्याशित व्यवहार का कारण बन सकती है। इसके अतिरिक्त, यदि कुकी उपयोगकर्ता सत्रों को ट्रैक करने में शामिल है, तो इसका उपयोग सत्र स्थिरीकरण हमले को अंजाम देने के लिए किया जा सकता है। इस कमजोरी से संबंधित प्राथमिक सिंक है:
Sinks:
From: https://portswigger.net/web-security/dom-based/javascript-injection
DOM-आधारित JavaScript इंजेक्शन कमजोरियाँ तब उत्पन्न होती हैं जब एक स्क्रिप्ट डेटा चलाती है, जिसे हमलावर द्वारा नियंत्रित किया जा सकता है, JavaScript कोड के रूप में।
Sinks:
From: https://portswigger.net/web-security/dom-based/document-domain-manipulation
Document-domain manipulation vulnerabilities तब होती हैं जब एक स्क्रिप्ट document.domain
प्रॉपर्टी को ऐसे डेटा का उपयोग करके सेट करती है जिसे एक हमलावर नियंत्रित कर सकता है।
document.domain
प्रॉपर्टी same-origin policy के enforcement में key role निभाती है। जब विभिन्न मूलों से दो पृष्ठ अपने document.domain
को same value पर सेट करते हैं, तो वे बिना किसी प्रतिबंध के इंटरैक्ट कर सकते हैं। हालांकि ब्राउज़र document.domain
के लिए असाइन किए जाने वाले मानों पर कुछ limits लगाते हैं, जो वास्तविक पृष्ठ मूल के लिए पूरी तरह से असंबंधित मानों के असाइनमेंट को रोकते हैं, लेकिन अपवाद मौजूद हैं। आमतौर पर, ब्राउज़र child या parent domains के उपयोग की अनुमति देते हैं।
Sinks:
From: https://portswigger.net/web-security/dom-based/websocket-url-poisoning
WebSocket-URL poisoning तब होता है जब एक स्क्रिप्ट नियंत्रित डेटा को WebSocket कनेक्शन के लिए लक्ष्य URL के रूप में उपयोग करती है।
Sinks:
WebSocket
कंस्ट्रक्टर WebSocket-URL poisoning कमजोरियों की ओर ले जा सकता है।
From: https://portswigger.net/web-security/dom-based/link-manipulation
DOM-आधारित लिंक-हेरफेर कमजोरियाँ तब उत्पन्न होती हैं जब एक स्क्रिप्ट हमलावर-नियंत्रित डेटा को वर्तमान पृष्ठ के भीतर एक नेविगेशन लक्ष्य पर लिखती है, जैसे कि एक क्लिक करने योग्य लिंक या एक फॉर्म का सबमिशन URL।
Sinks:
From: https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation
Ajax अनुरोध हेरफेर कमजोरियाँ तब उत्पन्न होती हैं जब एक स्क्रिप्ट हमलावर-नियंत्रित डेटा को एक Ajax अनुरोध में लिखती है जो XmlHttpRequest
ऑब्जेक्ट का उपयोग करके जारी किया जाता है।
Sinks:
From: https://portswigger.net/web-security/dom-based/local-file-path-manipulation
स्थानीय फ़ाइल-पथ हेरफेर की कमजोरियाँ तब उत्पन्न होती हैं जब एक स्क्रिप्ट हमलावर-नियंत्रित डेटा को फ़ाइल-हैंडलिंग API में filename
पैरामीटर के रूप में पास करती है। इस कमजोरी का उपयोग एक हमलावर द्वारा एक URL बनाने के लिए किया जा सकता है, जो यदि किसी अन्य उपयोगकर्ता द्वारा देखा जाता है, तो उपयोगकर्ता के ब्राउज़र को एक मनमाना स्थानीय फ़ाइल खोलने या लिखने के लिए प्रेरित कर सकता है।
Sinks:
From: https://portswigger.net/web-security/dom-based/client-side-sql-injection
क्लाइंट-साइड SQL-इंजेक्शन कमजोरियाँ तब होती हैं जब एक स्क्रिप्ट हमलावर-नियंत्रित डेटा को एक असुरक्षित तरीके से क्लाइंट-साइड SQL क्वेरी में शामिल करती है।
Sinks:
From: https://portswigger.net/web-security/dom-based/html5-storage-manipulation
HTML5-storage manipulation vulnerabilities तब उत्पन्न होती हैं जब एक स्क्रिप्ट हमलावर-नियंत्रित डेटा को वेब ब्राउज़र के HTML5 स्टोरेज में स्टोर करती है (localStorage
या sessionStorage
)। जबकि यह क्रिया स्वाभाविक रूप से एक सुरक्षा कमजोरी नहीं है, यह समस्या बन जाती है यदि एप्लिकेशन बाद में स्टोर किए गए डेटा को पढ़ता है और इसे असुरक्षित तरीके से प्रोसेस करता है। इससे एक हमलावर को स्टोरेज तंत्र का लाभ उठाकर अन्य DOM-आधारित हमले करने की अनुमति मिल सकती है, जैसे कि क्रॉस-साइट स्क्रिप्टिंग और जावास्क्रिप्ट इंजेक्शन।
Sinks:
From: https://portswigger.net/web-security/dom-based/client-side-xpath-injection
DOM-आधारित XPath-इंजेक्शन कमजोरियाँ तब होती हैं जब एक स्क्रिप्ट हमलावर-नियंत्रित डेटा को एक XPath क्वेरी में शामिल करती है।
Sinks:
From: https://portswigger.net/web-security/dom-based/client-side-json-injection
DOM-आधारित JSON-इंजेक्शन कमजोरियाँ तब होती हैं जब एक स्क्रिप्ट हमलावर-नियंत्रित डेटा को एक स्ट्रिंग में शामिल करती है जिसे JSON डेटा संरचना के रूप में पार्स किया जाता है और फिर एप्लिकेशन द्वारा संसाधित किया जाता है।
Sinks:
From: https://portswigger.net/web-security/dom-based/web-message-manipulation
वेब-संदेश कमजोरियाँ तब उत्पन्न होती हैं जब एक स्क्रिप्ट हमलावर-नियंत्रित डेटा को एक वेब संदेश के रूप में दूसरे दस्तावेज़ में भेजती है जो ब्राउज़र के भीतर है। कमजोर वेब-संदेश हेरफेर का एक उदाहरण PortSwigger's Web Security Academy पर पाया जा सकता है।
Sinks:
postMessage()
विधि का उपयोग करके वेब संदेश भेजने से कमजोरियाँ उत्पन्न हो सकती हैं यदि संदेश प्राप्त करने के लिए इवेंट लिस्नर आने वाले डेटा को असुरक्षित तरीके से संभालता है।
From: https://portswigger.net/web-security/dom-based/dom-data-manipulation
DOM-डेटा हेरफेर कमजोरियाँ तब उत्पन्न होती हैं जब एक स्क्रिप्ट हमलावर-नियंत्रित डेटा को DOM के भीतर एक फ़ील्ड में लिखती है जिसका उपयोग दृश्य UI या क्लाइंट-साइड लॉजिक में किया जाता है। इस कमजोरी का उपयोग एक हमलावर द्वारा एक URL बनाने के लिए किया जा सकता है जो, यदि किसी अन्य उपयोगकर्ता द्वारा देखा जाता है, तो क्लाइंट-साइड UI की उपस्थिति या व्यवहार को बदल सकता है।
Sinks:
From: https://portswigger.net/web-security/dom-based/denial-of-service
DOM-आधारित सेवा से इनकार की कमजोरियाँ तब होती हैं जब एक स्क्रिप्ट हमलावर-नियंत्रित डेटा को एक समस्याग्रस्त प्लेटफ़ॉर्म API को असुरक्षित रूप से पास करती है। इसमें ऐसे APIs शामिल हैं, जो जब सक्रिय होते हैं, तो उपयोगकर्ता के कंप्यूटर को अत्यधिक मात्रा में CPU या डिस्क स्थान का उपभोग करने के लिए प्रेरित कर सकते हैं। ऐसी कमजोरियों के महत्वपूर्ण दुष्प्रभाव हो सकते हैं, जैसे कि ब्राउज़र वेबसाइट की कार्यक्षमता को सीमित कर देता है, डेटा को localStorage
में स्टोर करने के प्रयासों को अस्वीकार करके या व्यस्त स्क्रिप्ट को समाप्त करके।
Sinks:
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)