mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
43 lines
3.3 KiB
Markdown
43 lines
3.3 KiB
Markdown
# SOME - Same Origin Method Execution
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
## Same Origin Method Execution
|
|
|
|
Habrá ocasiones en las que podrás ejecutar algo de javascript limitado en una página. Por ejemplo, en el caso en que puedes [**controlar un valor de callback que será ejecutado**](./#javascript-function).
|
|
|
|
En esos casos, una de las mejores cosas que podrías hacer es **acceder al DOM para llamar a cualquier** acción sensible que puedas encontrar allí (como hacer clic en un botón). Sin embargo, generalmente encontrarás esta vulnerabilidad en **pequeños endpoints sin nada interesante en el DOM**.
|
|
|
|
En esos escenarios, este ataque será muy útil, porque su objetivo es poder **abusar de la ejecución limitada de JS dentro de un DOM desde una página diferente del mismo dominio** con acciones mucho más interesantes.
|
|
|
|
Básicamente, el flujo del ataque es el siguiente:
|
|
|
|
- Encontrar un **callback que puedas abusar** (potencialmente limitado a \[\w\\.\_]).
|
|
- Si no está limitado y puedes ejecutar cualquier JS, podrías simplemente abusar de esto como un XSS regular.
|
|
- Hacer que la **víctima abra una página** controlada por el **atacante**.
|
|
- La **página se abrirá sola** en una **ventana diferente** (la nueva ventana tendrá el objeto **`opener`** referenciando a la inicial).
|
|
- La **página inicial** cargará la **página** donde se encuentra el **DOM interesante**.
|
|
- La **segunda página** cargará la **página vulnerable abusando del callback** y usando el objeto **`opener`** para **acceder y ejecutar alguna acción en la página inicial** (que ahora contiene el DOM interesante).
|
|
|
|
> [!CAUTION]
|
|
> Ten en cuenta que incluso si la página inicial accede a una nueva URL después de haber creado la segunda página, el **objeto `opener` de la segunda página sigue siendo una referencia válida a la primera página en el nuevo DOM**.
|
|
>
|
|
> Además, para que la segunda página pueda usar el objeto opener **ambas páginas deben estar en el mismo origen**. Esta es la razón por la cual, para abusar de esta vulnerabilidad, necesitas encontrar algún tipo de **XSS en el mismo origen**.
|
|
|
|
### Exploitation
|
|
|
|
- Puedes usar este formulario para **generar un PoC** para explotar este tipo de vulnerabilidad: [https://www.someattack.com/Playground/SOMEGenerator](https://www.someattack.com/Playground/SOMEGenerator)
|
|
- Para encontrar una ruta DOM a un elemento HTML con un clic, puedes usar esta extensión de navegador: [https://www.someattack.com/Playground/targeting_tool](https://www.someattack.com/Playground/targeting_tool)
|
|
|
|
### Example
|
|
|
|
- Puedes encontrar un ejemplo vulnerable en [https://www.someattack.com/Playground/](https://www.someattack.com/Playground/)
|
|
- Ten en cuenta que en este ejemplo el servidor está **generando código javascript** y **agregándolo** al HTML basado en el **contenido del parámetro de callback:** `<script>opener.{callbacl_content}</script>`. Por eso en este ejemplo no necesitas indicar el uso de `opener` explícitamente.
|
|
- También revisa este writeup de 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}}
|