hacktricks/pentesting-web/xss-cross-site-scripting/some-same-origin-method-execution.md

4.2 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

参考资料