# Client Side Template Injection (CSTI) {{#include ../banners/hacktricks-training.md}} ## Summary Ni kama [**Server Side Template Injection**](ssti-server-side-template-injection/index.html) lakini katika **mteja**. **SSTI** inaweza kukuruhusu **kutekeleza msimbo** kwenye seva ya mbali, **CSTI** inaweza kukuruhusu **kutekeleza msimbo wa JavaScript** wa kiholela katika kivinjari cha mwathirika. **Kujaribu** kwa ajili ya udhaifu huu ni **kama** ilivyo katika kesi ya **SSTI**, mfasiri anatarajia **kigezo** na atakitekeleza. Kwa mfano, na mzigo kama `{{ 7-7 }}`, ikiwa programu ina **udhaifu** utaona `0`, na ikiwa sivyo, utaona asili: `{{ 7-7 }}` ## AngularJS AngularJS ni mfumo wa JavaScript unaotumika sana ambao unawasiliana na HTML kupitia sifa zinazojulikana kama maagizo, moja maarufu ikiwa **`ng-app`**. Agizo hili linaruhusu AngularJS kushughulikia maudhui ya HTML, na kuwezesha utekelezaji wa maelekezo ya JavaScript ndani ya mabano mawili ya curly. Katika hali ambapo pembejeo ya mtumiaji inaingizwa kwa nguvu katika mwili wa HTML ulio na alama ya `ng-app`, inawezekana kutekeleza msimbo wa JavaScript wa kiholela. Hapa chini kuna mifano inayoonyesha jinsi msimbo wa JavaScript unaweza kutekelezwa: ```javascript {{$on.constructor('alert(1)')()}} {{constructor.constructor('alert(1)')()}}
``` Unaweza kupata mfano wa **msingi mtandaoni** wa udhaifu katika **AngularJS** katika [http://jsfiddle.net/2zs2yv7o/](http://jsfiddle.net/2zs2yv7o/) na katika [**Burp Suite Academy**](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-angularjs-expression) > [!CAUTION] > [**Angular 1.6 iliondoa sandbox**](http://blog.angularjs.org/2016/09/angular-16-expression-sandbox-removal.html) hivyo kutoka toleo hili payload kama `{{constructor.constructor('alert(1)')()}}` au `` inapaswa kufanya kazi. ## VueJS Unaweza kupata utekelezaji wa **Vue** ulio na udhaifu katika [https://vue-client-side-template-injection-example.azu.now.sh/](https://vue-client-side-template-injection-example.azu.now.sh)\ Payload inayofanya kazi: [`https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor(%27alert(%22foo%22)%27)()%7D%`](