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

43 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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中**`<script>opener.{callbacl_content}</script>`**。这就是为什么在此示例中您不需要明确指示使用`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}}