SOME - Same Origin Method Execution

Reading time: 4 minutes

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)

支持 HackTricks

Same Origin Method Execution

在某些情况下,您可以在页面中执行一些有限的javascript。例如,在您可以 控制将被执行的回调值的情况下。

在这些情况下,您可以做的最好的事情之一是访问DOM以调用您能找到的任何敏感操作(例如点击按钮)。然而,通常您会在没有任何有趣内容的DOM的小端点中发现此漏洞。

在这些场景中,这种攻击将非常有用,因为其目标是能够利用来自同一域的不同页面中的DOM内的有限JS执行进行更有趣的操作。

基本上,攻击流程如下:

  • 找到一个您可以利用的回调(可能限制为 [\w\._])。
  • 如果没有限制并且您可以执行任何JS,您可以像常规XSS一样利用它。
  • 受害者打开一个由 攻击者控制的页面。
  • 页面将自己在一个不同的窗口中打开(新窗口将有对象**opener**引用初始窗口)。
  • 初始页面将加载有趣DOM所在的页面
  • 第二个页面将加载利用回调的脆弱页面,并使用**opener对象访问并在初始页面中执行某些操作**(现在包含有趣的DOM)。

caution

请注意,即使初始页面在创建第二个页面后访问新URL,第二个页面的opener对象仍然是对新DOM中第一个页面的有效引用

此外,为了使第二个页面能够使用opener对象,两个页面必须在同一源中。这就是为什么为了利用此漏洞,您需要找到某种同一源中的XSS

Exploitation

Example

  • 您可以在https://www.someattack.com/Playground/找到一个脆弱的示例。
  • 请注意,在此示例中,服务器生成javascript代码将其添加到基于回调参数内容的HTML中:<script>opener.{callbacl_content}</script>**。这就是为什么在此示例中您不需要明确指示使用opener
  • 还可以查看此CTF写作:https://ctftime.org/writeup/36068

References

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)

支持 HackTricks