# SOME - Same Origin Method Execution {{#include ../../banners/hacktricks-training.md}} ## Same Origin Method Execution 在某些情况下,您可以在页面中执行一些有限的javascript。例如,在您可以[ **控制将被执行的回调值**](#javascript-function)的情况下。 在这些情况下,您可以做的最好的事情之一是**访问DOM以调用您能找到的任何**敏感操作(例如点击按钮)。然而,通常您会在**没有任何有趣内容的DOM的小端点**中发现此漏洞。 在这些场景中,这种攻击将非常有用,因为其目标是能够**利用来自同一域的不同页面中的DOM内的有限JS执行**进行更有趣的操作。 基本上,攻击流程如下: - 找到一个**您可以利用的回调**(可能限制为 \[\w\\.\_])。 - 如果没有限制并且您可以执行任何JS,您可以像常规XSS一样利用它。 - 让**受害者打开一个由** **攻击者**控制的页面。 - **页面将自己**在一个**不同的窗口**中打开(新窗口将有对象**`opener`**引用初始窗口)。 - **初始页面**将加载**有趣DOM**所在的**页面**。 - **第二个页面**将加载**利用回调的脆弱页面**,并使用**`opener`**对象**访问并在初始页面中执行某些操作**(现在包含有趣的DOM)。 > [!CAUTION] > 请注意,即使初始页面在创建第二个页面后访问新URL,**第二个页面的`opener`对象仍然是对新DOM中第一个页面的有效引用**。 > > 此外,为了使第二个页面能够使用opener对象,**两个页面必须在同一源中**。这就是为什么为了利用此漏洞,您需要找到某种**同一源中的XSS**。 ### Exploitation - 您可以使用此表单来**生成PoC**以利用此类漏洞:[https://www.someattack.com/Playground/SOMEGenerator](https://www.someattack.com/Playground/SOMEGenerator) - 为了找到具有点击的HTML元素的DOM路径,您可以使用此浏览器扩展:[https://www.someattack.com/Playground/targeting_tool](https://www.someattack.com/Playground/targeting_tool) ### Example - 您可以在[https://www.someattack.com/Playground/](https://www.someattack.com/Playground/)找到一个脆弱的示例。 - 请注意,在此示例中,服务器**生成javascript代码**并**将其添加**到基于**回调参数内容的HTML中:**``**。这就是为什么在此示例中您不需要明确指示使用`opener`。 - 还可以查看此CTF写作:[https://ctftime.org/writeup/36068](https://ctftime.org/writeup/36068) ## References - [https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/](https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/) {{#include ../../banners/hacktricks-training.md}}