Come funziona (remoto) XSS (in CSRF)?

0

Ho appena letto un articolo su CSRF e menziona 3 vettori di attacco; XSS, collegamenti manipolati e un exploid locale.

Considerando che gli ultimi due metodi sembrano essere possibili (per me), sono abbastanza insicuro, su come l'XSS svolgerà un ruolo qui.

Basandomi sul fatto che mi piacerebbe sfruttare un sito Web attraverso una vittima, non vedo alcuna possibilità su come utilizzare XSS qui. Potrei solo capire come farlo se sono quello che fa l'XSS, ma in questo caso non avrei bisogno di una vittima, vero?

L'unica opzione a cui posso pensare è un URL di spoofing con il Payload come parametro, ma sarebbe già il vettore 2.

Modifica: ora penso di avere un indizio; l'utente malintenzionato crea un XSS persistente che viene attivato quando una (qualsiasi) vittima visita il sito legittimo.

Questa idea è corretta?

    
posta pguetschow 03.11.2016 - 08:42
fonte

3 risposte

4

In realtà se c'è XSS, i token CSRF non offrono alcuna protezione. Nel momento in cui puoi inserire JavaScript, puoi facilmente recuperare anche il token che protegge il modulo.

    
risposta data 03.11.2016 - 08:46
fonte
0

Il modo in cui CSRF di solito funziona è che in qualche modo ingannare la vittima per fare clic su un collegamento (o altrimenti richiedere una pagina) che esegue un'azione sul sito di destinazione. Questo potrebbe ad es. faccia un sito chiamato evil.com che autosubmitting un modulo nascosto a bank.com/transfer.php con JS ogni volta che un surfista innocente si imbatte in esso. Questo è CSRF senza XSS.

Quindi, dove entra l'XSS nell'immagine? Se esiste una vulnerabilità XSS su bank.com , l'utente malintenzionato potrebbe fare la stessa cosa da bank.com , ovvero inviare una richiesta di trasferimento di denaro ogni volta che la vittima visita la home page delle banche. Questo è molto più potente in quanto i clienti di Bank hanno più probabilità di visitare bank.com mentre ci sono loggati piuttosto che visitare evil.com .

Migliora ancora quando si tiene conto del fatto che la vulnerabilità XSS può essere utilizzata per leggere il token CSRF se ce n'è uno e quindi bypassare tale difesa.

Ora non sono sicuro che chiamerei più questo secondo esame CSRF, dal momento che la richiesta non è più cross-site. Ma immagino che questo sia ciò a cui si riferisce XSS CSRF.

    
risposta data 03.11.2016 - 09:46
fonte
0

Hai solo bisogno di una richiesta (GET, POST) che viaggi attraverso la sessione della vittima per fare un attacco CSRF di successo, in questo modo potresti usare tag HTML che richiedono risorse dal server, ad esempio, tag img , quindi se c'è una vulnerabilità XSS nell'applicazione web, è possibile inserire qualcosa di simile a questo:

<img src="http://mywebbank/transfer?account=12345678&quantity=1000000"/>

QuestoèunsempliceesempiodiCSRFconXSS.Orasel'applicazionewebutilizzailtokenperconvalidareunarichiestalegittima,ènecessariounmodoperottenerequeltoken;lamaggiorpartedelleapplicazioniwebaggiungeuntokeninunmoduloHTML,qualcosadelgenere:

<inputtype="hidden" id="token" name="token" value="3343583489" />

È possibile iniettare un XSS nella stessa pagina in cui si trova il campo token , questo XSS otterrà quel token e creerà un elemento HTML che genererà una richiesta HTTP con ogni parametro richiesto (incluso il token), per esempio:

<script>
var ifr = document.createElement("IFRAME");
ifr.src="http://mywebbank/transfer?account=12345678&quantity=1000000&token="+document.getElementById("token").value;
document.appendChild(ifr);
</script>

In questo modo, puoi eseguire un attacco CSRF attraverso un XSS e bypassare la protezione basata sul token; questo è solo un modo per farlo, ma potresti farlo in un modo diverso, devi solo essere creativo.

Spero che questa informazione ti aiuti.

    
risposta data 03.11.2016 - 23:33
fonte

Leggi altre domande sui tag