Client Side Template Injection (CSTI)
Summary
Це схоже на Server Side Template Injection, але на клієнті. SSTI може дозволити вам виконати код на віддаленому сервері, CSTI може дозволити вам виконати довільний JavaScript код у браузері жертви.
Тестування на наявність цієї вразливості дуже схоже на випадок SSTI, інтерпретатор очікує шаблон і виконає його. Наприклад, з корисним навантаженням на кшталт {{ 7-7 }}
, якщо додаток вразливий, ви побачите 0
, а якщо ні, ви побачите оригінал: {{ 7-7 }}
AngularJS
AngularJS - це широко використовуваний JavaScript фреймворк, який взаємодіє з HTML через атрибути, відомі як директиви, однією з яких є ng-app
. Ця директива дозволяє AngularJS обробляти HTML вміст, що дозволяє виконувати JavaScript вирази всередині подвійних фігурних дужок.
У ситуаціях, коли введення користувача динамічно вставляється в HTML тіло, позначене ng-app
, можливо виконати довільний JavaScript код. Це можна досягти, використовуючи синтаксис AngularJS у введенні. Нижче наведені приклади, які демонструють, як можна виконати JavaScript код:
Ви можете знайти дуже базовий онлайн приклад вразливості в AngularJS за посиланням http://jsfiddle.net/2zs2yv7o/ та в Burp Suite Academy
Angular 1.6 видалив пісочницю, тому з цієї версії корисне навантаження, таке як {{constructor.constructor('alert(1)')()}}
або <input ng-focus=$event.view.alert('XSS')>
, повинно працювати.
VueJS
Ви можете знайти вразливу реалізацію Vue за посиланням https://vue-client-side-template-injection-example.azu.now.sh/
Працююче навантаження: https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor(%27alert(%22foo%22)%27)()%7D%
А джерело вразливого прикладу тут: https://github.com/azu/vue-client-side-template-injection-example
Дуже хороший пост про CSTI у VUE можна знайти за посиланням https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets
V3
Кредит: Гарет Хейс, Льюїс Ардерн та PwnFunction
V2
Credit: Mario Heiderich
Перевірте більше VUE payloads на https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected
Mavo
Payload:
Більше пейлоадів у https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations
Список виявлення брутфорсу
Last updated