SOME - Same Origin Method Execution

Support HackTricks

Same Origin Method Execution

Es wird Gelegenheiten geben, bei denen du einige eingeschränkte JavaScript in einer Seite ausführen kannst. Zum Beispiel im Fall, dass du einen Callback-Wert kontrollieren kannst, der ausgeführt wird.

In diesen Fällen ist eine der besten Dinge, die du tun kannst, auf das DOM zuzugreifen, um jede sensible Aktion aufzurufen, die du dort finden kannst (wie das Klicken auf einen Button). Allerdings wirst du diese Schwachstelle normalerweise in kleinen Endpunkten ohne interessante Dinge im DOM finden.

In diesen Szenarien wird dieser Angriff sehr nützlich sein, da sein Ziel darin besteht, die eingeschränkte JS-Ausführung innerhalb eines DOM von einer anderen Seite derselben Domain mit viel interessanteren Aktionen auszunutzen.

Grundsätzlich ist der Angriffsfluss wie folgt:

  • Finde einen Callback, den du ausnutzen kannst (potenziell beschränkt auf [\w\._]).

  • Wenn es nicht beschränkt ist und du beliebiges JS ausführen kannst, könntest du dies einfach als reguläres XSS ausnutzen.

  • Lass die Opfer eine Seite öffnen, die vom Angreifer kontrolliert wird.

  • Die Seite wird sich selbst in einem neuen Fenster öffnen (das neue Fenster hat das Objekt opener, das auf das ursprüngliche verweist).

  • Die ursprüngliche Seite wird die Seite laden, auf der sich das interessante DOM befindet.

  • Die zweite Seite wird die anfällige Seite laden, indem sie den Callback ausnutzt und das opener-Objekt verwendet, um auf die ursprüngliche Seite zuzugreifen und eine Aktion auszuführen (die jetzt das interessante DOM enthält).

Beachte, dass selbst wenn die ursprüngliche Seite nach dem Erstellen der zweiten Seite auf eine neue URL zugreift, das opener-Objekt der zweiten Seite immer noch eine gültige Referenz auf die erste Seite im neuen DOM ist.

Darüber hinaus müssen beide Seiten, damit die zweite Seite das Opener-Objekt verwenden kann, im selben Ursprung sein. Das ist der Grund, warum du, um diese Schwachstelle auszunutzen, eine Art von XSS im selben Ursprung finden musst.

Exploitation

Beispiel

  • Du kannst ein anfälliges Beispiel unter https://www.someattack.com/Playground/ finden.

  • Beachte, dass der Server in diesem Beispiel JavaScript-Code generiert und hinzufügt, basierend auf dem Inhalt des Callback-Parameters: <script>opener.{callbacl_content}</script>. Deshalb musst du in diesem Beispiel die Verwendung von opener nicht explizit angeben.

  • Überprüfe auch diesen CTF-Writeup: https://ctftime.org/writeup/36068

References

Support HackTricks

Last updated