mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-13 14:53:03 +00:00
4.2 KiB
4.2 KiB
SOME - 同源方法执行
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在网络安全公司工作吗?想要看到你的公司在 HackTricks 中被宣传吗?或者想要访问PEASS 的最新版本或下载 HackTricks 的 PDF吗?查看订阅计划!
- 探索PEASS 家族,我们独家的NFTs收藏品
- 获取官方 PEASS & HackTricks 商品
- 加入 💬 Discord 群组 或 电报群组 或 关注 我的 Twitter 🐦@carlospolopm。
- 通过向 hacktricks 仓库](https://github.com/carlospolop/hacktricks) 和 hacktricks-cloud 仓库 提交 PR 来分享你的黑客技巧。
同源方法执行
有时候你可以在页面中执行一些有限的 JavaScript。例如,在你可以控制将被执行的回调值的情况下。
在这种情况下,你可以做的最好的事情之一就是访问 DOM 来调用你在其中找到的任何敏感操作(比如点击按钮)。然而,通常你会在没有任何有趣内容的 DOM 中找到这个漏洞。
在这种情况下,这种攻击将非常有用,因为它的目标是能够滥用来自同一域的不同页面中的 DOM 中的有限 JS 执行,以执行更有趣的操作。
基本上,攻击流程如下:
- 找到一个可以滥用的回调(可能限制为 [\w\._])。
- 如果没有限制并且你可以执行任何 JS,你可以像普通 XSS 一样滥用它。
- 使受害者打开由攻击者控制的页面。
- 页面将在一个不同的窗口中打开(新窗口将具有引用初始窗口的对象**
opener
**)。 - 初始页面将加载包含有趣 DOM 的页面。
- 第二个页面将加载滥用回调的易受攻击页面,并使用**
opener
** 对象来访问并执行初始页面中的某些操作(现在包含有趣 DOM)。
{% hint style="danger" %}
请注意,即使初始页面在创建第二个页面后访问新 URL,第二个页面的**opener
对象仍然是对新 DOM 中第一个页面的有效引用**。
此外,为了使第二个页面能够使用 opener 对象,两个页面必须在同一源中。这就是为什么为了滥用这个漏洞,你需要找到某种同源中的 XSS 的原因。 {% endhint %}
利用
- 你可以使用这个表单来生成一个 PoC 来利用这种类型的漏洞:https://www.someattack.com/Playground/SOMEGenerator
- 为了找到具有点击功能的 HTML 元素的 DOM 路径,你可以使用这个浏览器扩展:https://www.someattack.com/Playground/targeting_tool
示例
- 你可以在 https://www.someattack.com/Playground/ 找到一个易受攻击的示例。
- 请注意,在这个示例中,服务器生成 JavaScript 代码并根据回调参数的内容将其添加到 HTML 中:
<script>opener.{callbacl_content}</script>
。这就是为什么在这个示例中你不需要显式指示使用opener
。 - 还请查看这个 CTF 解密:https://ctftime.org/writeup/36068