Iframes in XSS, CSP and SOP
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Postoje 3 načina da se označi sadržaj iframed stranice:
Putem src
koji označava URL (URL može biti cross origin ili same origin)
Putem src
koji označava sadržaj koristeći data:
protokol
Putem srcdoc
koji označava sadržaj
Pristupanje Parent & Child varijablama
Ako pristupite prethodnom html-u putem http servera (kao što je python3 -m http.server
), primetićete da će se svi skripti izvršiti (pošto ne postoji CSP koji to sprečava). roditelj neće moći da pristupi secret
varijabli unutar bilo kog iframe-a i samo iframe-ovi if2 i if3 (koji se smatraju istim mestom) mogu pristupiti tajni u originalnom prozoru.
Obratite pažnju kako se if4 smatra da ima null
poreklo.
Molimo vas, obratite pažnju kako u sledećim zaobilaženjima odgovor na iframed stranicu ne sadrži nijedan CSP header koji sprečava izvršavanje JS-a.
self
vrednost script-src
neće dozvoliti izvršavanje JS koda koristeći data:
protokol ili srcdoc
atribut.
Međutim, čak i none
vrednost CSP-a će dozvoliti izvršavanje iframe-ova koji stavljaju URL (potpun ili samo putanju) u src
atribut.
Stoga je moguće zaobići CSP stranice sa:
Napomena kako prethodni CSP dozvoljava samo izvršavanje inline skripte.
Međutim, samo if1
i if2
skripte će biti izvršene, ali samo if1
će moći da pristupi roditeljskom tajnom.
Stoga, moguće je obići CSP ako možete da otpremite JS datoteku na server i učitate je putem iframe-a čak i sa script-src 'none'
. Ovo se potencijalno može uraditi i zloupotrebom same-site JSONP krajnje tačke.
Možete testirati ovo sa sledećim scenarijom gde je kolačić ukraden čak i sa script-src 'none'
. Samo pokrenite aplikaciju i pristupite joj putem vašeg pregledača:
Sadržaj unutar iframe-a može biti podvrgnut dodatnim ograničenjima korišćenjem sandbox
atributa. Po defaultu, ovaj atribut nije primenjen, što znači da nema ograničenja.
Kada se koristi, sandbox
atribut nameće nekoliko ograničenja:
Sadržaj se tretira kao da potiče iz jedinstvenog izvora.
Svaki pokušaj slanja formi je blokiran.
Izvršavanje skripti je zabranjeno.
Pristup određenim API-jima je onemogućen.
Sprečava interakciju linkova sa drugim kontekstima pretraživanja.
Korišćenje dodataka putem <embed>
, <object>
, <applet>
, ili sličnih oznaka je zabranjeno.
Navigacija sadržajem najvišeg nivoa pretraživačkog konteksta od strane samog sadržaja je sprečena.
Funkcije koje se automatski aktiviraju, poput reprodukcije videa ili automatskog fokusiranja kontrola formi, su blokirane.
Vrednost atributa može biti ostavljena prazna (sandbox=""
) da bi se primenila sva prethodno navedena ograničenja. Alternativno, može se postaviti na listu specifičnih vrednosti odvojenih razmakom koje izuzimaju iframe od određenih ograničenja.
Proverite sledeće stranice:
Bypassing SOP with Iframes - 1Bypassing SOP with Iframes - 2Blocking main page to steal postmessageSteal postmessage modifying iframe locationUčite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)