hacktricks/pentesting-web/postmessage-vulnerabilities/blocking-main-page-to-steal-postmessage.md
2024-02-10 18:14:16 +00:00

50 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# PostMessage'yi çalmak için ana sayfayı engelleme
<details>
<summary><strong>AWS hacklemeyi sıfırdan kahramanla öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
* 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**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonunu
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter**'da takip edin 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Hacking hilelerinizi [hacktricks repo](https://github.com/carlospolop/hacktricks) ve [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)'ya PR göndererek paylaşın**.
</details>
## Iframe'lerle RC Kazanma
Bu [**Terjanq yazısına**](https://gist.github.com/terjanq/7c1a71b83db5e02253c218765f96a710) 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**:
```javascript
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ı:
```bash
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.
<details>
<summary><strong>AWS hacklemeyi sıfırdan kahraman olmak için öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
* 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**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonunu.
* [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com)
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter**'da beni takip edin 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Hacking hilelerinizi [hacktricks repo](https://github.com/carlospolop/hacktricks) ve [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)'ya PR göndererek paylaşın**.
</details>