4.5 KiB
PostMessage'yi çalmak için ana sayfayı engelleme
AWS hacklemeyi sıfırdan kahramanla öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!
- Bir cybersecurity şirketinde çalışıyor musunuz? Şirketinizi HackTricks'te reklamını görmek ister misiniz? veya PEASS'ın en son sürümüne veya HackTricks'i PDF olarak indirmek ister misiniz? ABONELİK PLANLARINI kontrol edin!
- The PEASS Ailesi'ni keşfedin, özel NFT'lerimiz koleksiyonunu
- Resmi PEASS & HackTricks ürünlerini edinin
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter'da takip edin 🐦@carlospolopm.
- Hacking hilelerinizi hacktricks repo ve hacktricks-cloud repo'ya PR göndererek paylaşın.
Iframe'lerle RC Kazanma
Bu Terjanq yazısına göre, null kökenlerinden oluşturulan blob belgeleri güvenlik avantajı için izole edilir, bu da demektir ki eğer ana sayfayı meşgul tutarsanız, iframe sayfası çalıştırılacak.
Temel olarak, bu zorlukta izole edilmiş bir iframe çalıştırılır ve hemen ardından yüklendikten sonra ana sayfa bayrakla bir post mesajı gönderecektir.
Ancak, bu postmessage iletişimi XSS'ye karşı savunmasızdır (iframe JS kodunu çalıştırabilir).
Bu nedenle, saldırganın amacı, ebeveynin iframe'i oluşturmasına izin vermek, ancak önce ebeveyn sayfanın duyarlı veriyi (bayrak) meşgul tutmak ve payload'ı iframe'e göndermek. Ebeveyn meşgulken, iframe payload'ı çalıştırır ve ebeveyn postmessage mesajını dinler ve bayrağı sızdırır.
Sonunda, iframe payload'ı çalıştırdı ve ebeveyn sayfa meşgul olmaktan çıktı, bu yüzden bayrağı gönderir ve payload onu sızdırır.
Ancak, ebeveyn iframe'i oluşturduktan hemen sonra meşgul olmasını ve iframe'in duyarlı veriyi göndermeye hazır olana kadar meşgul olmasını nasıl sağlayabilirsiniz? Temel olarak, ebeveynin yürütmesini sağlayabileceğiniz async bir eylem bulmanız gerekiyor. Örneğin, bu zorlukta ebeveyn şu şekilde postmessage'ları dinliyordu:
window.addEventListener('message', (e) => {
if (e.data == 'blob loaded') {
$("#previewModal").modal();
}
});
Bu durumda, postMessage ile gönderilen bir büyük tamsayıyı karşılaştırmada dizeye dönüştürmek mümkündü ve bu işlem biraz zaman alacaktı:
const buffer = new Uint8Array(1e7);
win?.postMessage(buffer, '*', [buffer.buffer]);
Ve postmessage'i göndermek için, iframe oluşturulduktan hemen sonra, ebeveyninden veri almak için hazır hale gelmeden önce setTimeout'in milisaniyeleriyle oynamanız gerekecektir.
AWS hacklemeyi sıfırdan kahraman olmak için öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!
- Bir cybersecurity şirketinde çalışıyor musunuz? Şirketinizi HackTricks'te reklamını görmek ister misiniz? veya PEASS'ın en son sürümüne veya HackTricks'i PDF olarak indirmek ister misiniz? ABONELİK PLANLARINI kontrol edin!
- The PEASS Ailesi'ni keşfedin, özel NFT'lerimiz koleksiyonunu.
- Resmi PEASS & HackTricks ürünlerini alın
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter'da beni takip edin 🐦@carlospolopm.
- Hacking hilelerinizi hacktricks repo ve hacktricks-cloud repo'ya PR göndererek paylaşın.