SOME - Ejecución de Método de Misma Origen
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Ejecución de Método de Misma Origen
Habrá ocasiones en las que podrás ejecutar un javascript limitado en una página. Por ejemplo, en el caso en que puedes controlar un valor de callback que será ejecutado.
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 que, para abusar de esta vulnerabilidad, necesitas encontrar algún tipo de XSS en el mismo origen.
Explotación
- Puedes usar este formulario para generar un PoC para explotar este tipo de vulnerabilidad: https://www.someattack.com/Playground/SOMEGenerator
- Para encontrar un camino DOM a un elemento HTML con un clic, puedes usar esta extensión de navegador: https://www.someattack.com/Playground/targeting_tool
Ejemplo
- Puedes encontrar un ejemplo vulnerable en 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 callback:
<script>opener.{callbacl_content}</script>
. Por eso en este ejemplo no necesitas indicar el uso deopener
explícitamente. - También revisa este writeup de CTF: https://ctftime.org/writeup/36068
Referencias
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.