SOME - Same Origin Method Execution

Podržite HackTricks

Izvršavanje metoda iste domene

Biće prilika kada možete izvršiti neki ograničeni javascript na stranici. Na primer, u slučaju kada možete kontrolisati vrednost povratnog poziva koja će biti izvršena.

U tim slučajevima, jedna od najboljih stvari koje možete učiniti je da pristupite DOM-u kako biste pozvali bilo koju osetljivu akciju koju možete pronaći (poput klika na dugme). Međutim, obično ćete ovu ranjivost pronaći u malim krajnjim tačkama bez ikakvih zanimljivih stvari u DOM-u.

U tim scenarijima, ovaj napad će biti veoma koristan, jer je njegov cilj da bude u mogućnosti da zloupotrebi ograničeno izvršavanje JS unutar DOM-a sa različite stranice iz iste domene sa mnogo zanimljivim akcijama.

U osnovi, tok napada je sledeći:

  • Pronađite povratni poziv koji možete zloupotrebiti (potencijalno ograničen na [\w\._]).

  • Ako nije ograničen i možete izvršiti bilo koji JS, mogli biste to zloupotrebiti kao redovni XSS

  • Naterajte žrtvu da otvori stranicu koju kontroliše napadač

  • Stranica će se otvoriti u drugom prozoru (novi prozor će imati objekat opener koji referencira inicijalni)

  • Inicijalna stranica će učitati stranicu gde se nalazi zanimljivi DOM.

  • Druga stranica će učitati ranjivu stranicu zloupotrebljavajući povratni poziv i koristeći objekat opener da pristupi i izvrši neku akciju na inicijalnoj stranici (koja sada sadrži zanimljivi DOM).

Imajte na umu da čak i ako inicijalna stranica pristupi novoj URL adresi nakon što je kreirala drugu stranicu, opener objekat druge stranice je i dalje važeća referenca na prvu stranicu u novom DOM-u.

Štaviše, da bi druga stranica mogla da koristi objekat opener, obe stranice moraju biti iz iste domene. To je razlog zašto, da biste zloupotrebili ovu ranjivost, morate pronaći neku vrstu XSS u istoj domeni.

Eksploatacija

Primer

  • Možete pronaći ranjiv primer na https://www.someattack.com/Playground/

  • Imajte na umu da server u ovom primeru generiše javascript kod i dodaje ga u HTML na osnovu sadržaja parametra povratnog poziva: <script>opener.{callbacl_content}</script>. Zato u ovom primeru ne morate eksplicitno naznačiti korišćenje opener.

  • Takođe proverite ovaj CTF izveštaj: https://ctftime.org/writeup/36068

Reference

Podržite HackTricks

Last updated