# Iframes katika XSS, CSP na SOP
Jifunze AWS hacking kutoka sifuri hadi shujaa nahtARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!
* Je! Unafanya kazi katika **kampuni ya usalama wa mtandao**? Unataka kuona **kampuni yako ikitangazwa kwenye HackTricks**? au unataka kupata upatikanaji wa **toleo jipya la PEASS au kupakua HackTricks kwa PDF**? Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* **Jiunge na** [**💬**](https://emojipedia.org/speech-balloon/) [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **fuata** kwenye **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**repo ya hacktricks**](https://github.com/carlospolop/hacktricks) **na** [**repo ya hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
## Iframes katika XSS
Kuna njia 3 za kuonyesha maudhui ya ukurasa ulio na iframe:
* Kupitia `src` ikionyesha URL (URL inaweza kuwa ya asili tofauti au sawa)
* Kupitia `src` ikionyesha maudhui kwa kutumia itifaki ya `data:`
* Kupitia `srcdoc` ikionyesha maudhui
**Kupata Vipimo vya Mzazi na Mtoto**
```html
```
```html
```
Ikiwa utapata html iliyopita kupitia seva ya http (kama `python3 -m http.server`) utaona kwamba scripts zote zitatekelezwa (kwa kuwa hakuna CSP inayozuia hilo). **Mzazi hataweza kupata upatikanaji wa `secret` var ndani ya kifungu chochote** na **iframes if2 & if3 (ambazo zinafikiriwa kuwa tovuti moja) pekee ndizo zinaweza kupata upatikanaji wa siri** kwenye dirisha la awali.\
Tafadhali angalia jinsi if4 inavyochukuliwa kuwa na asili ya `null`.
### Iframes na CSP
{% hint style="info" %}
Tafadhali, angalia jinsi katika kuzidi kwa ifuatayo, jibu kwa ukurasa ulio na iframe haina kichwa cha CSP kinachozuia utekelezaji wa JS.
{% endhint %}
Thamani ya `self` ya `script-src` haitaruhusu utekelezaji wa msimbo wa JS ukitumia itifaki ya `data:` au sifa ya `srcdoc`.\
Hata hivyo, hata thamani ya `none` ya CSP itaruhusu utekelezaji wa iframes ambazo huweka URL (kamili au tu njia) kwenye sifa ya `src`.\
Hivyo ni rahisi kuzidi CSP ya ukurasa na:
```html
```
Tafadhali angalia jinsi **CSP ya awali inaruhusu utekelezaji wa skripti ya ndani**.\
Hata hivyo, **tu skripti za `if1` na `if2` zitatekelezwa lakini `if1` pekee itaweza kufikia siri ya mzazi**.
![](<../../.gitbook/assets/image (369).png>)
Hivyo basi, ni **rahisi kukiuka CSP ikiwa unaweza kupakia faili ya JS kwenye seva na kuipakia kupitia fremu hata na `script-src 'none'`**. Hii inaweza **pia kufanywa kwa kudhuru kituo cha JSONP cha tovuti ile ile**.
Unaweza kufanya majaribio haya na hali ifuatayo ambapo kuki inaibiwa hata na `script-src 'none'`. Fanya programu iende na ufikie kwa kutumia kivinjari chako:
```python
import flask
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
resp = flask.Response('')
resp.headers['Content-Security-Policy'] = "script-src 'self'"
resp.headers['Set-Cookie'] = 'secret=THISISMYSECRET'
return resp
@app.route("/cookie_s.html")
def cookie_s():
return ""
if __name__ == "__main__":
app.run()
```
### Malipo Mengine Yaliyopatikana kwenye Mbuga
```html
```
### Iframe sandbox
Maudhui ndani ya iframe inaweza kuwekwa chini ya vizuizi zaidi kupitia matumizi ya sifa ya `sandbox`. Kwa chaguo-msingi, sifa hii haitekelezwi, maana hakuna vizuizi vilivyowekwa.
Inapotumiwa, sifa ya `sandbox` inaweka vizuizi kadhaa:
* Maudhui yanachukuliwa kama yanatoka kwenye chanzo kimoja.
* Jaribio lolote la kuwasilisha fomu linazuiliwa.
* Utekelezaji wa scripts unakatazwa.
* Upatikanaji wa APIs fulani unalemazwa.
* Inazuia viungo kutokana na kuingiliana na muktadha mwingine wa kuvinjari.
* Matumizi ya programu-jalizi kupitia `