hacktricks/pentesting-web/xss-cross-site-scripting/some-same-origin-method-execution.md
2024-02-11 01:46:25 +00:00

5.8 KiB

SOME - Wykonanie metody o tej samej domenie

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Wykonanie metody o tej samej domenie

Zdarzą się sytuacje, w których możesz wykonać pewien ograniczony kod JavaScript na stronie. Na przykład, w przypadku, gdy możesz kontrolować wartość wywołania zwrotnego, która zostanie wykonana.

W takich przypadkach jedną z najlepszych rzeczy, które możesz zrobić, jest uzyskanie dostępu do DOM, aby wywołać dowolną wrażliwą akcję, którą można tam znaleźć (np. kliknięcie przycisku). Jednak zazwyczaj tę podatność znajdziesz w małych punktach końcowych bez żadnych interesujących elementów w DOM.

W takich scenariuszach ten atak będzie bardzo przydatny, ponieważ jego celem jest wykorzystanie ograniczonego wykonywania JS wewnątrz DOM z innej strony o tej samej domenie z bardziej interesującymi akcjami.

Podstawowy przebieg ataku jest następujący:

  • Znajdź zwrotkę, którą można wykorzystać (potencjalnie ograniczoną do [\w\._]).
  • Jeśli nie jest ograniczona i możesz wykonać dowolny kod JS, możesz po prostu wykorzystać to jako zwykłe XSS.
  • Spowoduj, że ofiara otworzy stronę kontrolowaną przez atakującego.
  • Strona otworzy się w innym oknie (nowe okno będzie miało obiekt opener, który odnosi się do początkowego okna).
  • Początkowa strona załaduje stronę, na której znajduje się interesujący DOM.
  • Druga strona załaduje podatną stronę, wykorzystując zwrotkę i używając obiektu opener, aby uzyskać dostęp i wykonać pewną akcję w początkowej stronie (która teraz zawiera interesujący DOM).

{% hint style="danger" %} Należy zauważyć, że nawet jeśli początkowa strona uzyska dostęp do nowego adresu URL po utworzeniu drugiej strony, obiekt opener drugiej strony wciąż jest ważnym odwołaniem do pierwszej strony w nowym DOM.

Ponadto, aby druga strona mogła używać obiektu opener, obie strony muszą być w tej samej domenie. Dlatego też, aby wykorzystać tę podatność, musisz znaleźć pewien rodzaj XSS w tej samej domenie. {% endhint %}

Wykorzystanie

Przykład

  • Możesz znaleźć przykład podatności na stronie 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 zwrotki: <script>opener.{callbacl_content}</script>. Dlatego w tym przykładzie nie musisz wskazywać użycia opener explicite.
  • Sprawdź również ten opis rozwiązania CTF: https://ctftime.org/writeup/36068

Odwołania

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!