SOME - Same Origin Method Execution

Reading time: 3 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstützen Sie HackTricks

Same Origin Method Execution

Es wird Gelegenheiten geben, bei denen Sie einige eingeschränkte JavaScript auf einer Seite ausführen können. Zum Beispiel im Fall, dass Sie einen Callback-Wert kontrollieren können, der ausgeführt wird.

In diesen Fällen ist eine der besten Maßnahmen, die Sie ergreifen können, auf das DOM zuzugreifen, um jede sensible Aktion aufzurufen, die Sie dort finden können (wie das Klicken auf einen Button). In der Regel finden Sie diese Schwachstelle jedoch in kleinen Endpunkten ohne interessante Dinge im DOM.

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 zu missbrauchen, mit viel interessanteren Aktionen.

Grundsätzlich ist der Angriffsfluss wie folgt:

  • Finden Sie einen Callback, den Sie missbrauchen können (potenziell beschränkt auf [\w\._]).
  • Wenn es nicht beschränkt ist und Sie beliebiges JS ausführen können, könnten Sie dies einfach als reguläres XSS missbrauchen.
  • Lassen Sie die Opfer eine von dem Angreifer kontrollierte Seite öffnen.
  • 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 lädt die Seite, auf der sich das interessante DOM befindet.
  • Die zweite Seite lädt die anfällige Seite, die den Callback missbraucht, und verwendet das opener-Objekt, um auf die ursprüngliche Seite zuzugreifen und eine Aktion auszuführen (die jetzt das interessante DOM enthält).

caution

Beachten Sie, 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. Dies ist der Grund, warum Sie, um diese Schwachstelle auszunutzen, eine Art von XSS im selben Ursprung finden müssen.

Exploitation

Beispiel

  • Sie können ein anfälliges Beispiel unter https://www.someattack.com/Playground/ finden.
  • Beachten Sie, 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 müssen Sie in diesem Beispiel die Verwendung von opener nicht ausdrücklich angeben.
  • Überprüfen Sie auch diesen CTF-Bericht: https://ctftime.org/writeup/36068

References

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstützen Sie HackTricks