È possibile creare un xss con solo tag html

5

Non sono a conoscenza di tutti i trucchi xss ..

Durante la programmazione in Ruby on Rails, utilizzando un metodo di disinfezione per consentire solo determinati tag e rende è meglio cancellare tutti gli altri tag e script

i tag rimanenti sono

    "small", "dfn", "sup", "sub", "pre", "blockquote", "ins", "ul", "var", "samp", "del",
 "h6", "h5", "h4", "h3", "h2", "h1", "span", "br", "hr", "em", "address", "img", "kbd",
 "tt", "a", "acronym", "abbr", "code", "p", "i", "b", "strong", "dd", "dt", "dl", "ol",
 "li", "div", "big", "cite"

È possibile creare un attacco XSS con una combinazione di questi tag?

    
posta Nick Ginanto 03.12.2012 - 17:10
fonte

4 risposte

14

Sì. È banale.

<div onmouseover="alert(1)" style="position:fixed;left:0;top:0;width:9999px;height:9999px;"></div>

Potresti salvare il tuo lavoro prima di provarlo, tuttavia l'avviso potrebbe apparire ripetutamente mentre muovi il mouse sullo schermo.

Ovviamente, un attacco migliore implicherebbe la distruzione di div non appena viene chiamato il codice JavaScript, in modo da farlo apparire legittimo.

Dovresti sfuggire a tutti gli output per evitare questo.

    
risposta data 03.12.2012 - 17:16
fonte
14

Sì, quasi tutti i tag HTML consentono di dichiarare un gestore di eventi. Alcuni di questi eventi potrebbero essere attivati quando la pagina viene caricata senza interazione dell'utente:

<img src=x onerror=alert(1) />

I tag evento non sono l'unico modo per attivare xss:

<a href=javascript:alert(1)>xss</a>

Una soluzione possibile è impostare le norme sulla sicurezza dei contenuti per questa pagina

X-Content-Security-Policy: unsafe-inline

Assicurati di testare realmente la tua soluzione. Non prendere la parola di nessuno (Anche il CSP è nuovo)

Un'altra opzione è HTMLPurifer di PHP che è più avanzata di Ruby's Sanitize.

    
risposta data 03.12.2012 - 17:37
fonte
2

Sì: <img onerror=alert(document.cookie) src=1 />

I requisiti per l'escaping dell'output variano in base alla posizione nel documento. Il testo che deve essere in un attributo HTML deve essere sottoposto a escape in modo diverso ( '" ) rispetto al testo destinato ad essere in un elemento HTML ( <> ), ad esempio. L' API OWASP Enterprise Security (ESAPI) è un buon modo per gestirlo, poiché fornisce meccanismi di escape per tutti i diversi contesti. La versione di Ruby può essere trovata su Github .

    
risposta data 03.12.2012 - 17:42
fonte
2

Per un buon "cheat sheet" contenente un numero di attacchi XSS HTML, vedi qui: OWASP.org Diventano abbastanza creativi. Vale la pena usare quel foglio per testare il tuo sito così com'è costruito e per controllarlo di volta in volta man mano che l'elenco viene aggiornato.

Spero che ti aiuti!

    
risposta data 10.01.2013 - 08:38
fonte

Leggi altre domande sui tag