hacktricks/pentesting-web/xss-cross-site-scripting/some-same-origin-method-execution.md
2024-02-10 13:03:23 +00:00

5.7 KiB

SOME - Esecuzione di metodi con la stessa origine

Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Esecuzione di metodi con la stessa origine

Ci saranno occasioni in cui puoi eseguire un po' di codice JavaScript limitato in una pagina. Ad esempio, nel caso in cui puoi controllare un valore di callback che verrà eseguito.

In questi casi, una delle migliori cose che puoi fare è accedere al DOM per chiamare qualsiasi azione sensibile che puoi trovare lì (come fare clic su 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 è quello di sfruttare l'esecuzione JS limitata all'interno di un DOM da una pagina diversa dello stesso dominio con azioni molto interessanti.

In sostanza, il flusso dell'attacco è il seguente:

  • Trova una callback che puoi sfruttare (potenzialmente limitata a [\w\._]).
  • Se non è limitata e puoi eseguire qualsiasi JS, puoi semplicemente sfruttarla come un normale XSS.
  • Fai aprire una pagina controllata dall'attaccante alla vittima.
  • 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 in cui si trova il DOM interessante.
  • La seconda pagina caricherà la pagina vulnerabile sfruttando la callback e utilizzando l'oggetto opener per accedere ed eseguire un'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. Questa è la ragione per cui, per sfruttare questa vulnerabilità, è necessario trovare una sorta di XSS nella stessa origine. {% endhint %}

Sfruttamento

Esempio

  • Puoi trovare un esempio vulnerabile su https://www.someattack.com/Playground/
  • Nota che in questo esempio il server sta generando codice JavaScript e lo aggiunge all'HTML in base al contenuto del parametro di 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

Riferimenti

Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!