Attacchi XSS basati su DOM: qual è l'esempio più pericoloso?

7

Sapevo che gli attacchi XSS ("non persistenti" e "persistenti") possono dirottare la sessione utente, distruggere siti Web, condurre attacchi di phishing, ecc.

Tuttavia, non riesco a capire cosa sia pericoloso di XSS basato su DOM se non è in grado di (sessione di hijack, click jacking, ecc.)

Ho esaminato XSS basato su OWSAP DOM e anche Questa pagina che descrive queste due note:

  1. The malicious payload was not embedded in the raw HTML page at any time (unlike the other flavors of XSS).

  2. This exploit only works if the browser does not modify the URL characters. Mozilla automatically encodes < and > (into %3C and %3E, respectively) in the document.

Quindi, quale tipo di attacco (basato su XSS DOM) può raggiungere?

    
posta Akam 10.03.2013 - 08:24
fonte

2 risposte

12

Lo scripting cross-site è uno scripting cross-site - la differenza tra DOM / persistent / riflette è solo nel modo in cui l'attacco viene eseguito (e prevenuto).

La minaccia è la stessa - un hacker ha in qualche modo iniettato javascript dannoso in pagine che non dovrebbero essere in grado di controllare, in genere a causa delle vulnerabilità nella progettazione del sito web.

Prendi l' esempio da OWASP , dove la pagina HTML, includeva alcuni javascript inline (parte all'interno dei tag) . Lo scopo del javascript in linea era una variabile del parametro di query "predefinito" e usarne il valore per modificare il DOM, ovvero modificare il valore del primo tag <option> sul valore di tale parametro di query.

L'origine della pagina web (inviata attraverso la rete) assomigliava a:

Select your language:
<select><script>    
document.write("<OPTION value=1>"+document.location.href.substring(document.location.href.indexOf("default=")+8)+"</OPTION>");    
document.write("<OPTION value=2>English</OPTION>");    
</script></select>

ma dopo essere stati visualizzati da http://www.some.site/page.html?default=French , il DOM diventerebbe:

Select your language:
<select>    
<OPTION value=1>French</OPTION>
<OPTION value=2>English</OPTION>
</select>

Significa che il tuo browser considera la pagina web come quella che è stata inviata sopra la rete una volta eseguita la javascript di modifica DOM (le chiamate a document.write ).

Ora un abile attaccante invia un link (via email / link alla pagina web) che una vittima fa clic indicando http://www.some.site/page.html?default=<script>alert(document.cookie)</script> . Quindi la pagina web sulla pagina (dopo aver elaborato il javascript iniziale con document.write ) ha il seguente aspetto:

Select your language:
<select>    
<OPTION value=1><script>alert(document.cookie)</script></OPTION>
<OPTION value=2>English</OPTION>
</select>

Ancora alert(document.cookie) potrebbe essere qualunque javascript arbitrario voglia l'attaccante.

Forse c'è un nome utente / password segreta o un cookie di sessione o un numero di carta di credito sulla pagina, e invece di allarmi leghi premendo il pulsante di invio per una chiamata Ajax in modo che quando l'utente preme Invia, invia tutti i dati segreti a un server a cui l'utente malintenzionato può accedere.

Non c'è davvero uno scenario nel peggiore dei casi - qualsiasi azione tu possa fare con javascript che dovresti essere in grado di fare se esiste una vulnerabilità DOM-XSS.

    
risposta data 10.03.2013 - 08:52
fonte
1

DOM XSS sono pericolosi quanto l'XSS riflesso. Per sfruttarlo, l'utente malintenzionato deve sempre indurre un cliente a creare una richiesta (ad esempio facendo clic su un collegamento che punta ancora al sito sicuro considerato). Dopo averlo fatto, puoi eseguire JavaScript sul browser del cliente. Questo può portare a qualsiasi tipo di attacco al browser!

    
risposta data 07.08.2014 - 15:17
fonte

Leggi altre domande sui tag