XSS all'interno del tag di ancoraggio (a) senza interazione dell'utente?

4

È possibile iniettare un carico utile all'interno del tag <a> in modo che lo script venga eseguito senza interazione dell'utente?

L'iniezione si trova all'interno dell'attributo href . Posso iniettare onmouseover o onclick attributi, ma è necessaria l'interazione dell'utente.

Il trucco onfocus e autofocus non funziona nel tag <a> (correggimi se ho torto).

Nel mio caso, la pagina non può essere caricata in iframe, quindi non posso fare trucchi con iframe.

Conosci qualche altro trucco?

    
posta Gari BN 06.09.2017 - 17:47
fonte

2 risposte

10

Puoi forzare l'interazione dell'utente con i CSS, rendendo l'elemento a un elemento di blocco posizionato fisso con una dimensione grande e uno z-index.

<a style="display: block; position: fixed; top: 0; left: 0; z-index: 99999; width: 9999px; height: 9999px;" onmouseover="alert('xss')">

    
risposta data 06.09.2017 - 18:26
fonte
2

Sì, è possibile.

The onfocus and autofocus trick does not work in tag (correct me if I'm wrong).

corretto, l'attributo autofocus non esiste per i tag <a> . Invece, puoi sfruttare i nomi di ancoraggio per ottenere comunque l'effetto di messa a fuoco automatica.

Ad esempio, crea un documento con questo link:

<a href="#" onfocus="alert('Gimme bounty!')" name="foo">Click me</a>

Ora apri il documento come https://example.com/anchor.html#foo . L'anchor #foo renderà il browser autofocus dell'elemento link con il nome foo e attiva il payload JS.

(Funziona per me in Google Chrome ma non in Firefox.)

    
risposta data 06.09.2017 - 18:12
fonte

Leggi altre domande sui tag