Iframes in XSS, CSP and SOP
XSS'te İframeler
Bir iframeli sayfanın içeriğini belirtmenin 3 yolu vardır:
src
ile bir URL belirterek (URL çapraz kökenli veya aynı kökenli olabilir)data:
protokolünü kullanarak içeriği belirtereksrc
ileİçeriği belirterek
srcdoc
kullanarak
Eğer önceki html'e bir http sunucusu üzerinden erişirseniz (örneğin python3 -m http.server
gibi) tüm scriptlerin yürütüldüğünü fark edeceksiniz (çünkü engelleyen bir CSP yok). Ana sayfa, herhangi bir iframe içindeki secret
değişkenine erişemeyecek ve yalnızca aynı site olarak kabul edilen if2 ve if3 iframeleri orijinal penceredeki secret değişkenine erişebilecek.
if4'ün null
kökene sahip olduğuna dikkat edin.
CSP ile İframeler
Lütfen, aşağıdaki bypasslarda iframelenmiş sayfaya verilen yanıtın JS yürütmesini engelleyen herhangi bir CSP başlığı içermediğine dikkat edin.
script-src
'nin self
değeri, JS kodunun data:
protokolünü veya srcdoc
özniteliğini kullanarak yürütülmesine izin vermeyecektir.
Ancak, CSP'nin none
değeri bile, src
özniteliğine URL (tam veya sadece yol) ekleyen iframelerin yürütülmesine izin verecektir.
Bu nedenle, bir sayfanın CSP'sini aşmak mümkündür:
Not alın ki önceki CSP yalnızca iç içe betiğin yürütülmesine izin verir.
Ancak, yalnızca if1
ve if2
betikleri yürütülecek ancak yalnızca if1
üst ebeveyin sırrına erişebilecek.
Bu nedenle, bir JS dosyasını sunucuya yükleyebilir ve iframe aracılığıyla yükleyebilirseniz, script-src 'none'
ile bile bir CSP'yi atlayabilirsiniz. Bu, aynı site JSONP ucu kullanılarak da potansiyel olarak yapılabilir.
Bunu script-src 'none'
ile bile bir çerezin çalındığı aşağıdaki senaryo ile test edebilirsiniz. Uygulamayı çalıştırın ve tarayıcınızdan erişin:
Vahşi Doğada Bulunan Diğer Yükler
Iframe kum havuzu
Bir iframe içindeki içerik, sandbox
özelliğinin kullanımıyla ek kısıtlamalara tabi tutulabilir. Varsayılan olarak, bu özellik uygulanmaz, yani herhangi bir kısıtlama bulunmaz.
Kullanıldığında, sandbox
özelliği birkaç kısıtlama getirir:
İçerik, benzersiz bir kaynaktan geldiği gibi işlenir.
Formların gönderilme girişimleri engellenir.
Komut dosyalarının yürütülmesi yasaklanmıştır.
Belirli API'lere erişim devre dışı bırakılmıştır.
Bağlantıların diğer gezinme bağlamlarıyla etkileşimini engeller.
<embed>
,<object>
,<applet>
veya benzer etiketler aracılığıyla eklentilerin kullanımı yasaktır.İçeriğin üst düzey gezinme bağlamının içeriğin kendisi tarafından engellenmesi.
Video oynatma veya form kontrollerinin otomatik odaklanması gibi otomatik olarak tetiklenen özellikler engellenir.
Özniteliğin değeri, tüm yukarıdaki kısıtlamaların uygulanması için boş bırakılabilir (sandbox=""
). Aksi takdirde, belirli kısıtlamalardan iframe'ı muaf tutan belirli değerlerin boşlukla ayrılmış bir listesi olarak ayarlanabilir.
Iframe'lerde SOP
Aşağıdaki sayfalara bakın:
pageBypassing SOP with Iframes - 1pageBypassing SOP with Iframes - 2pageBlocking main page to steal postmessagepageSteal postmessage modifying iframe locationLast updated