hacktricks/pentesting-web/xss-cross-site-scripting/some-same-origin-method-execution.md
2023-08-03 19:12:22 +00:00

5.9 KiB
Raw Blame History

SOME - 同源方法执行

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

同源方法执行

有时候你可以在一个页面中执行一些有限的javascript代码。例如在你可以控制将要执行的回调值的情况下。

在这种情况下,你可以做的最好的事情之一就是访问DOM以调用其中的敏感操作(比如点击一个按钮)。然而,通常你会在没有任何有趣的DOM内容的小型端点中发现这个漏洞。

在这些场景中,这种攻击将非常有用,因为它的目标是能够从同一域中的不同页面滥用DOM中的有限JS执行,并执行更有趣的操作。

基本上,攻击流程如下:

  • 找到一个可以滥用的回调函数(可能仅限于[\w\._])。
  • 如果没有限制并且你可以执行任何JS代码你可以将其视为常规的XSS攻击。
  • 受害者打开攻击者控制的页面
  • 页面将在不同的窗口中打开(新窗口将具有引用初始窗口的**opener**对象)。
  • 初始页面将加载包含有趣DOM页面
  • 第二个页面将加载滥用回调函数的易受攻击页面,并使用**opener对象来访问并在初始页面中执行某些操作**现在包含有趣的DOM

{% hint style="danger" %} 请注意即使初始页面在创建第二个页面后访问了一个新的URL第二个页面的**opener对象仍然是对新DOM中第一个页面的有效引用**。

此外为了使第二个页面能够使用opener对象两个页面必须处于同一源。这就是为什么为了滥用这个漏洞,你需要找到一种在同一源中的XSS漏洞的原因。 {% endhint %}

利用

示例

  • 你可以在https://www.someattack.com/Playground/找到一个易受攻击的示例。
  • 请注意,在这个示例中,服务器生成javascript代码并将其基于回调参数的内容添加到HTML中<script>opener.{callbacl_content}</script>。这就是为什么在这个示例中,你不需要显式指示使用opener的原因。
  • 还请查看这个CTF解题报告https://ctftime.org/writeup/36068

参考资料

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥