Client Side Template Injection (CSTI)
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éteur 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
, 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, dont une notable est 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é :
Vous pouvez trouver un exemple en ligne très basique de la vulnérabilité dans AngularJS sur http://jsfiddle.net/2zs2yv7o/ et dans Burp Suite Academy
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.
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
Un très bon article sur CSTI en VUE peut être trouvé sur https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets
V3
Crédit : Gareth Heyes, Lewis Ardern & PwnFunction
V2
Crédit: Mario Heiderich
Consultez plus de charges utiles VUE dans https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected
Mavo
Charge utile:
Plus de charges utiles dans https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations
Liste de détection de force brute
Last updated