Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
Ci saranno occasioni in cui puoi eseguire un po' di javascript limitato in una pagina. Ad esempio, nel caso in cui puoi [**controllare un valore di callback che verrà eseguito**](./#javascript-function).
In questi casi, una delle migliori cose che puoi fare è **accedere al DOM per chiamare qualsiasi** azione sensibile tu possa trovare lì (come cliccare un pulsante). Tuttavia, di solito troverai questa vulnerabilità in **piccoli endpoint senza nulla di interessante nel DOM**.
In questi scenari, questo attacco sarà molto utile, perché il suo obiettivo è essere in grado di **abusare dell'esecuzione limitata di JS all'interno di un DOM da una pagina diversa dello stesso dominio** con azioni molto più interessanti.
* La **pagina iniziale** caricherà la **pagina** dove si trova il **DOM interessante**.
* La **seconda pagina** caricherà la **pagina vulnerabile abusando del callback** e utilizzando l'oggetto **`opener`** per **accedere ed eseguire qualche azione nella pagina iniziale** (che ora contiene il DOM interessante).
Nota che anche se la pagina iniziale accede a un nuovo URL dopo aver creato la seconda pagina, l'**oggetto `opener` della seconda pagina è ancora un riferimento valido alla prima pagina nel nuovo DOM**.
Inoltre, affinché la seconda pagina possa utilizzare l'oggetto opener, **entrambe le pagine devono essere nella stessa origine**. Questo è il motivo per cui, per abusare di questa vulnerabilità, devi trovare qualche tipo di **XSS nella stessa origine**.
* Puoi usare questo modulo per **generare un PoC** per sfruttare questo tipo di vulnerabilità: [https://www.someattack.com/Playground/SOMEGenerator](https://www.someattack.com/Playground/SOMEGenerator)
* Per trovare un percorso DOM a un elemento HTML con un clic puoi usare questa estensione del browser: [https://www.someattack.com/Playground/targeting\_tool](https://www.someattack.com/Playground/targeting\_tool)
* Nota che in questo esempio il server sta **generando codice javascript** e **aggiungendolo** all'HTML in base al **contenuto del parametro callback:**`<script>opener.{callbacl_content}</script>`. Ecco perché in questo esempio non è necessario indicare esplicitamente l'uso di `opener`.
* Controlla anche questo writeup CTF: [https://ctftime.org/writeup/36068](https://ctftime.org/writeup/36068)
Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.