# Iframes w XSS, CSP i SOP
Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! * Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana na HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)! * Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family) * Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) * **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
## Iframes w XSS Istnieją 3 sposoby wskazania zawartości zafarowanej strony: * Poprzez `src` wskazujący na URL (URL może być z innej lub tej samej domeny) * Poprzez `src` wskazujący na zawartość za pomocą protokołu `data:` * Poprzez `srcdoc` wskazujący na zawartość **Dostęp do zmiennych rodzica i dziecka** ```html ``` ```html ``` Jeśli uzyskasz dostęp do poprzedniego pliku html za pomocą serwera http (np. `python3 -m http.server`), zauważysz, że wszystkie skrypty zostaną wykonane (ponieważ nie ma CSP, który by temu zapobiegał). **Rodzic nie będzie w stanie uzyskać dostępu do zmiennej `secret` wewnątrz żadnego iframe** i **tylko iframy if2 i if3 (które są uważane za te same strony) mogą uzyskać dostęp do sekretu** w oryginalnym oknie.\ Zauważ, że if4 jest uważany za mający pochodzenie `null`. ### Iframy z CSP {% hint style="info" %} Proszę zauważyć, że w poniższych bypassach odpowiedź na stronę z iframem nie zawiera nagłówka CSP, który zapobiegałby wykonaniu JS. {% endhint %} Wartość `self` dla `script-src` nie pozwoli na wykonanie kodu JS za pomocą protokołu `data:` ani atrybutu `srcdoc`.\ Jednak nawet wartość `none` CSP pozwoli na wykonanie iframów, które umieszczają adres URL (cały lub tylko ścieżkę) w atrybucie `src`.\ Dlatego możliwe jest obejście CSP na stronie za pomocą: ```html ``` Zauważ, jak **poprzednia CSP zezwala jedynie na wykonanie skryptu osadzonego**.\ Jednakże **tylko skrypty `if1` i `if2` zostaną wykonane, ale tylko `if1` będzie w stanie uzyskać dostęp do rodzica sekretu**. ![](<../../.gitbook/assets/image (369).png>) Dlatego możliwe jest **obejście CSP, jeśli można przesłać plik JS na serwer i załadować go za pomocą iframe nawet przy `script-src 'none'`**. Można to **potencjalnie również zrobić nadużywając punktu końcowego JSONP o tej samej domenie**. Możesz przetestować to przy następującym scenariuszu, gdzie ciasteczko jest kradzione nawet przy `script-src 'none'`. Po prostu uruchom aplikację i uzyskaj do niej dostęp za pomocą przeglądarki: ```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() ``` ### Inne ładunki znalezione w dziczy ```html ``` ### Ramka piaskownica Zawartość w ramce może podlegać dodatkowym ograniczeniom za pomocą atrybutu `sandbox`. Domyślnie ten atrybut nie jest stosowany, co oznacza brak ograniczeń. Kiedy jest używany, atrybut `sandbox` narzuca kilka ograniczeń: * Zawartość jest traktowana tak, jakby pochodziła z unikalnego źródła. * Każda próba przesłania formularzy jest blokowana. * Wykonywanie skryptów jest zabronione. * Dostęp do określonych interfejsów API jest wyłączony. * Zapobiega łączeniu się linków z innymi kontekstami przeglądania. * Użycie wtyczek za pomocą tagów ``, ``, `` lub podobnych jest niedozwolone. * Nawigacja kontekstu przeglądania najwyższego poziomu zawartości przez samą zawartość jest uniemożliwiona. * Funkcje, które są uruchamiane automatycznie, takie jak odtwarzanie wideo lub automatyczne ustawianie fokusu na elementach formularza, są blokowane. Wartość atrybutu może być pozostawiona pusta (`sandbox=""`), aby zastosować wszystkie wyżej wymienione ograniczenia. Alternatywnie, może być ustawiona jako lista wartości oddzielonych spacją, które zwalniają ramkę z pewnych ograniczeń. ```html ``` ## Iframes w SOP Sprawdź następujące strony: {% content-ref url="../postmessage-vulnerabilities/bypassing-sop-with-iframes-1.md" %} [bypassing-sop-with-iframes-1.md](../postmessage-vulnerabilities/bypassing-sop-with-iframes-1.md) {% endcontent-ref %} {% content-ref url="../postmessage-vulnerabilities/bypassing-sop-with-iframes-2.md" %} [bypassing-sop-with-iframes-2.md](../postmessage-vulnerabilities/bypassing-sop-with-iframes-2.md) {% endcontent-ref %} {% content-ref url="../postmessage-vulnerabilities/blocking-main-page-to-steal-postmessage.md" %} [blocking-main-page-to-steal-postmessage.md](../postmessage-vulnerabilities/blocking-main-page-to-steal-postmessage.md) {% endcontent-ref %} {% content-ref url="../postmessage-vulnerabilities/steal-postmessage-modifying-iframe-location.md" %} [steal-postmessage-modifying-iframe-location.md](../postmessage-vulnerabilities/steal-postmessage-modifying-iframe-location.md) {% endcontent-ref %}
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! * Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana na HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)! * Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family) * Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) * **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).