mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
43 lines
2.8 KiB
Markdown
43 lines
2.8 KiB
Markdown
# 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}}
|