Ana sayfayı engelleyerek postmessage çalmak

Reading time: 2 minutes

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

Iframe'lerle RC'leri Kazanmak

Bu Terjanq yazısı'na göre, null kökenlerden oluşturulan blob belgeleri güvenlik faydaları için izole edilmiştir, bu da demektir ki eğer ana sayfayı meşgul tutarsanız, iframe sayfası çalıştırılacaktır.

Temelde bu zorlukta bir izole iframe çalıştırılmaktadır ve yüklenir yüklenmez ebeveyn sayfa bayrakla bir post mesajı gönderecektir.
Ancak, bu postmessage iletişimi XSS'ye karşı savunmasızdır (iframe JS kodu çalıştırabilir).

Bu nedenle, saldırganın amacı ebeveynin iframe'i oluşturmasına izin vermek, ancak önce ebeveyn sayfanın hassas verileri (bayrak) göndermesini meşgul tutmak ve payload'ı iframe'e göndermektir. Ebeveyn meşgulken, iframe payload'ı çalıştırır ve bu, ebeveyn postmessage mesajını dinleyen ve bayrağı sızdıran bir JS olacaktır.
Sonunda, iframe payload'ı çalıştırır ve ebeveyn sayfa meşgul olmayı bırakır, böylece bayrağı gönderir ve payload onu sızdırır.

Ama ebeveyni iframe'i oluşturduktan hemen sonra ve sadece iframe'in hassas verileri göndermeye hazır olmasını beklerken nasıl meşgul tutabilirsiniz? Temelde, ebeveynin çalıştırabileceği bir async hareket bulmanız gerekiyor. Örneğin, bu zorlukta ebeveyn postmessages dinliyordu:

javascript
window.addEventListener("message", (e) => {
if (e.data == "blob loaded") {
$("#previewModal").modal()
}
})

bu nedenle, o karşılaştırmada string'e dönüştürülecek bir postmessage'da büyük bir tam sayı göndermek mümkün oldu, bu da biraz zaman alacaktır:

bash
const buffer = new Uint8Array(1e7);
win?.postMessage(buffer, '*', [buffer.buffer]);

Ve kesin olmak için, o postmessageiframe oluşturulduktan hemen sonra ama ana sayfadan veri almaya hazır olmadan göndermek için, bir setTimeout'ın milisaniyeleriyle oynamanız gerekecek.

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin