Her halde ilk öğrendiğimiz html etiketlerinden biri a etiketidir. Bu etiket sayesinde bir metine link verebiliyoruz, eğer linkin yeni sekmede açılmasını istiyorsak a etiketimize target="_blank" eklemesi yaparak yeni sekmede istediğimiz linki açtırabiliyoruz. Aslında bu kullanım oldukça masum bir kullanım yolu, fakat işin aslında bir istismara izin veren bir yöntem bu yol. Yeni sekmede sayfayı açtırmak için kullanmış olduğumuz target="_blank" yeni sekmeyi açarken window.opener objesini oluşturmaktadır, bu objemiz içinde kaynak sekmeyi kalıtımsal olarak barındırmaktadır. Barındırmış olduğu bu sekme üzerinde ise javascript ile işlemler yapmanıza izin vermekte. Şimdi dilerseniz basit bir örneği şöyle bir gif ile gösterelim;
Gif'de çok basit bir şekilde location ile yönlendirme yaptık buradan bir phishing saldırısı yapılabilir eğer bu yöntem sizi kesmediyse biraz daha işi ciddileştirelim ve daha derine inip window.opener.document ile kaynak sekmede ki document objesine erişerek üzerinde değişiklik yaparak sayfaya bir javascript kodu yerleştirelim ve input alanlarına girilen değerleri kayıt edelim ve post işlemi gerçekleştirilirken bu değerleri kendimize gönderelim;
Gif'de çok basit bir şekilde location ile yönlendirme yaptık buradan bir phishing saldırısı yapılabilir veya daha derine inip isterseniz window.opener.document ile kaynak sekmede ki document objesine erişerek üzerinde değişiklik yapabilirsiniz kısacası gerisi sizin hayalinize kalıyor :) Bu duruma çözüm olarak ise her _blank ile oluşturulan yeni sayfada opener objesinin temizlenmesi gerekli. Bu işlem için ise a etiketine rel="noopener noreferrer" özelliğini vermeniz yeterli olacaktır.
Bu yazıyı bir süredir yazmayı düşünüyordum fakat bir türlü üşengeçliğimden yazamadım :) Adem İlter tarafından başlatılan salyangoz.me projesine bakarken bir deniyeyim dedim ve bildirdim durumu sağolsun Adem abi benide humans.txt'ye teşekkür listesine ekledi :) Salyangoz projesine ait gif ise şurada ki gibidir;
Dipnot:
- Bu zafiyetten bana sohbet arasında bahseden Gökmen Güreşçi'ye teşekkür ederim.
- Farklı çözüm yollarıda bulunmaktadır ben sadece en basit yolunu yazmak istedim :)
Gif'de bulunan kodlar ise şöyle;