SOME - Same Origin Method Execution

HackTricks'i Destekleyin

Same Origin Method Execution

Bir sayfada sınırlı javascript çalıştırabileceğiniz durumlar olacaktır. Örneğin, çalıştırılacak bir geri çağırma değerini kontrol edebildiğiniz durumlarda.

Bu durumlarda yapabileceğiniz en iyi şeylerden biri, orada bulabileceğiniz herhangi bir hassas eylemi çağırmak için DOM'a erişmek olacaktır (örneğin bir düğmeye tıklamak). Ancak, genellikle bu güvenlik açığını DOM'da ilginç bir şey olmayan küçük uç noktalar içinde bulacaksınız.

Bu senaryolarda, bu saldırı çok faydalı olacaktır, çünkü amacı, aynı alan adından farklı bir sayfa içindeki sınırlı JS yürütmesini kötüye kullanabilmek ve daha ilginç eylemler gerçekleştirmektir.

Temelde, saldırı akışı şu şekildedir:

  • Kötüye kullanabileceğiniz bir geri çağırma bulun (potansiyel olarak [\w\._] ile sınırlı).

  • Eğer sınırlı değilse ve herhangi bir JS çalıştırabiliyorsanız, bunu normal bir XSS olarak kötüye kullanabilirsiniz.

  • Kurbanı, saldırgan tarafından kontrol edilen bir sayfayı açmaya zorlayın.

  • Sayfa kendini farklı bir pencerede açacaktır (yeni pencere, başlangıçtaki nesne opener ile referans alacaktır).

  • Başlangıç sayfası, ilginç DOM'un bulunduğu sayfayı yükleyecektir.

  • İkinci sayfa, geri çağırmayı kötüye kullanarak savunmasız sayfayı yükleyecek ve opener nesnesini kullanarak başlangıç sayfasında bazı eylemleri erişip çalıştıracaktır (artık ilginç DOM'u içermektedir).

Başlangıç sayfası, ikinci sayfayı oluşturduktan sonra yeni bir URL'ye erişse bile, ikinci sayfanın opener nesnesi, yeni DOM'daki ilk sayfaya geçerli bir referans olmaya devam eder.

Ayrıca, ikinci sayfanın opener nesnesini kullanabilmesi için her iki sayfanın da aynı kökene sahip olması gerekir. Bu, bu güvenlik açığını kötüye kullanmak için bazı türde aynı köken içinde XSS bulmanız gerektiği anlamına gelir.

Exploitation

Örnek

  • Savunmasız bir örneği https://www.someattack.com/Playground/ adresinde bulabilirsiniz.

  • Bu örnekte sunucunun javascript kodu ürettiğini ve geri çağırma parametresinin içeriğine göre HTML'ye eklediğini unutmayın: <script>opener.{callbacl_content}</script> . Bu nedenle bu örnekte opener kullanımını açıkça belirtmenize gerek yoktur.

  • Ayrıca bu CTF yazısını kontrol edin: https://ctftime.org/writeup/36068

Referanslar

HackTricks'i Destekleyin

Last updated