hacktricks/src/pentesting-web/xss-cross-site-scripting/some-same-origin-method-execution.md

43 lines
3.3 KiB
Markdown

# 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:** `<script>opener.{callbacl_content}</script>`. 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}}