L'attributo XSS attraverso lo stile è possibile nei browser moderni?

8

Diciamo che gli utenti possono definire il contenuto dell'attributo style , ma in modo limitato. Non possono uscire dal suo valore, poiché un parser con elenchi in bianco rimuoverà tutti gli attributi / tag non sicuri prodotti in questo modo.

Possono fare XSS utilizzando solo il valore dell'attributo style nei browser moderni?
Con "moderno" essendo IE10 + e le versioni più recenti di altri browser.

    
posta Andrey Shchekin 10.06.2014 - 13:19
fonte

2 risposte

3

L'ho cercato ovunque, ma penso che tutti i browser moderni siano al sicuro da XSS in CSS. Sebbene avessi un test particolare, è stato eseguito sul mio Chrome (e probabilmente su altri browser)

Se l'applicazione ingenua inietta qualsiasi input in <style>...</style> , questo scenario interessante può accadere:

<html>
<head>
<style>
p {
    text-align: center;
    color: red;
    /*user can inject here*/
    }</style><script>alert()</script>

}
</style>
</head>
<body>

<h1>My First Heading</h1>

<p>My first paragraph.</p>

</body>
</html>

...

o

p {
    /*injecting into bg's url*/
    background: url("garbage"}</style><script>alert()</script>/*) repeat;
    text-align: center;
    color: red;
} 

Ovviamente .. un XSS

    
risposta data 10.06.2014 - 19:42
fonte
2

Sebbene trucchi pericolosi come behavior: url('some.htc') non sono disponibili nei browser moderni per impostazione predefinita, se si utilizza X-UA-Compatible intestazione o metatag per forzare Microsoft Internet Explorer in una diversa modalità di rendering, o se si omette la dichiarazione del tipo di documento, Internet Explorer utilizzerà il comportamento delle versioni precedenti in cui tali elementi sono disponibili.

Una dimostrazione (nota: non riesco a farlo funzionare su IE 11): link

    
risposta data 11.06.2014 - 17:03
fonte

Leggi altre domande sui tag