È possibile lo scripting cross-site con l'attributo img alt?

1

La mia domanda è, se qualche carattere è permesso nell'attributo alt di un tag img (ad eccezione delle virgolette doppie), XSS è possibile? Immagine valida o no.

    
posta Michael Blake 08.05.2014 - 07:24
fonte

2 risposte

3

Supponendo che tu stia circondando di virgolette doppie, questo andrebbe bene. Tuttavia, potresti anche sfuggire a < & gt ;, anche se i browser tradizionali non avranno alcun problema, nel caso in cui qualcuno abbia un agente utente danneggiato. È valido all'interno di un attributo, non è richiesto in un attributo con doppia citazione: link

    
risposta data 08.05.2014 - 07:44
fonte
11

Non hai menzionato come viene citato l'attributo, quindi ho coperto tutte le possibilità di quotazione degli attributi. Questa risposta riflette la precondizione che le virgolette sono già state eliminate come hai detto nella tua domanda.

Sì, se l'attributo è di per sé quotato o non quotato:

<img src='http://www.example.com/foo.jpg' alt='user-controlled' />

e

<img src=http://www.example.com/foo.jpg alt=user-controlled />

sono entrambi vulnerabili. Il primo è vulnerabile alla seguente sequenza

' onload='alert(&apos;xss&apos;)

quindi il tag diventa

<img src='http://www.example.com/foo.jpg' alt='' onload='alert(&apos;xss&apos;)' />

e il secondo è vulnerabile a questa sequenza

bar onload=alert('xss')

che verrà visualizzato come

<img src=http://www.example.com/foo.jpg alt=bar onload=alert('xss') />

Per quanto riguarda l'attributo doppio virgolette, oltre a limitare o codificare i caratteri di virgoletta doppia ( " - > &quot; ), dovrai rimuovere o codificare il carattere di e commerciale ( & - > %codice%). Da specifiche HTML :

Attribute values are a mixture of text and character references, except with the additional restriction that the text cannot contain an ambiguous ampersand

An ambiguous ampersand is a U+0026 AMPERSAND character (&) that is followed by one or more alphanumeric ASCII characters, followed by a ";" (U+003B) character, where these characters do not match any of the names given in the named character references section.

Poiché non puoi garantire che i dati controllati dall'utente non contengano una "e commerciale ambiguita", devi rimuovere o codificare correttamente questi caratteri.

Ora, se è possibile un attacco XSS con accesso solo al carattere &amp; per evitare il valore dell'attributo, probabilmente la risposta non è.

Se il valore & viene inserito come dati utente e il tag diventa

<img alt="&" src="http://www.example.com/foo.jpg"/>

e&verràprobabilmenteinterpretatocome&" dalla maggior parte dei browser, quindi è improbabile utilizzarlo come vettore di attacco.

Tuttavia, è meglio fare le cose correttamente quando si tratta di sicurezza, non si sa mai se questo sfuggente passo falso potrebbe essere trasformato in qualcosa di malvagio da qualcosa come mXSS .

    
risposta data 08.05.2014 - 11:00
fonte

Leggi altre domande sui tag