# SOME - Wykonanie Metody z Tego Samego Źródła {{#include ../../banners/hacktricks-training.md}} ## Wykonanie Metody z Tego Samego Źródła Będą sytuacje, w których możesz wykonać ograniczony javascript na stronie. Na przykład, w przypadku, gdy możesz [**kontrolować wartość zwrotną, która zostanie wykonana**](#javascript-function). W takich przypadkach jedną z najlepszych rzeczy, które możesz zrobić, jest **dostęp do DOM, aby wywołać dowolną** wrażliwą akcję, którą możesz tam znaleźć (jak kliknięcie przycisku). Jednak zazwyczaj znajdziesz tę lukę w **małych punktach końcowych bez żadnych interesujących rzeczy w DOM**. W tych scenariuszach atak będzie bardzo przydatny, ponieważ jego celem jest **wykorzystanie ograniczonego wykonania JS wewnątrz DOM z innej strony z tej samej domeny** z wieloma interesującymi akcjami. Zasadniczo, przepływ ataku jest następujący: - Znajdź **callback, który możesz wykorzystać** (potencjalnie ograniczony do \[\w\\.\_]). - Jeśli nie jest ograniczony i możesz wykonać dowolny JS, możesz po prostu wykorzystać to jak zwykłe XSS. - Spraw, aby **ofiara otworzyła stronę** kontrolowaną przez **atakującego**. - **Strona otworzy się** w **innym oknie** (nowe okno będzie miało obiekt **`opener`** odnoszący się do początkowego). - **Początkowa strona** załaduje **stronę**, na której znajduje się **interesujący DOM**. - **Druga strona** załaduje **wrażliwą stronę, wykorzystując callback** i używając obiektu **`opener`**, aby **uzyskać dostęp i wykonać jakąś akcję na początkowej stronie** (która teraz zawiera interesujący DOM). > [!CAUTION] > Zauważ, że nawet jeśli początkowa strona uzyskuje dostęp do nowego URL po utworzeniu drugiej strony, **obiekt `opener` drugiej strony jest nadal ważnym odniesieniem do pierwszej strony w nowym DOM**. > > Co więcej, aby druga strona mogła używać obiektu opener, **obie strony muszą być w tym samym źródle**. To jest powód, dla którego, aby wykorzystać tę lukę, musisz znaleźć jakiś rodzaj **XSS w tym samym źródle**. ### Wykorzystanie - Możesz użyć tej formy, aby **wygenerować PoC** do wykorzystania tego typu luki: [https://www.someattack.com/Playground/SOMEGenerator](https://www.someattack.com/Playground/SOMEGenerator) - Aby znaleźć ścieżkę DOM do elementu HTML z kliknięciem, możesz użyć tej rozszerzenia przeglądarki: [https://www.someattack.com/Playground/targeting_tool](https://www.someattack.com/Playground/targeting_tool) ### Przykład - Możesz znaleźć wrażliwy przykład w [https://www.someattack.com/Playground/](https://www.someattack.com/Playground/) - Zauważ, że w tym przykładzie serwer **generuje kod javascript** i **dodaje** go do HTML na podstawie **zawartości parametru callback:** ``. Dlatego w tym przykładzie nie musisz wskazywać użycia `opener` w sposób expliczny. - Sprawdź również ten opis CTF: [https://ctftime.org/writeup/36068](https://ctftime.org/writeup/36068) ## Odniesienia - [https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/](https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/) {{#include ../../banners/hacktricks-training.md}}