# SOME - Same Origin Method Execution {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * 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.
{% endhint %} ## Same Origin Method Execution 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. Fondamentalmente, il flusso dell'attacco è il seguente: * Trova un **callback che puoi abusare** (potenzialmente limitato a \[\w\\.\_]). * Se non è limitato e puoi eseguire qualsiasi JS, potresti semplicemente abusare di questo come un normale XSS. * Fai in modo che la **vittima apra una pagina** controllata dall'**attaccante**. * La **pagina si aprirà da sola** in una **finestra diversa** (la nuova finestra avrà l'oggetto **`opener`** che fa riferimento a quella iniziale). * 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). {% hint style="danger" %} 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**. {% endhint %} ### Exploitation * 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) ### Example * Puoi trovare un esempio vulnerabile in [https://www.someattack.com/Playground/](https://www.someattack.com/Playground/) * Nota che in questo esempio il server sta **generando codice javascript** e **aggiungendolo** all'HTML in base al **contenuto del parametro callback:** ``. 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) ## 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/) {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * 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.
{% endhint %}