Come può essere utilizzato document.referrer per XSS?

10

Un esempio molto semplice ...

<div id="cat"></div>
<script>
document.getElementById("cat").innerHTML = document.referrer;
</script>

o

<script src="' + document.referrer + '"></script>

Ho provato semplicemente a inviare la richiesta e ad aggiungere un'intestazione referrer, ma non sembra che risuoni nella pagina.

    
posta Michael Blake 27.08.2014 - 08:10
fonte

2 risposte

5

I browser aggiornati codificheranno l'URL del referrer.

Quindi i tuoi esempi non funzioneranno per attivare XSS al giorno d'oggi.

Prova questo:

<div id="cat"></div>
<script>
document.getElementById("cat").innerHTML = decodeURIComponent(document.referrer);
</script>

JSFIDDLE:

link

    
risposta data 27.11.2014 - 04:00
fonte
2

Il seguente codice è vulnerabile all'XSS basato su DOM, perché il valore controllato da hacker di document.referrer è tracciato dal browser:

<script src="' + document.referrer + '"></script>

Il codice sopra può essere sfruttato utilizzando una pagina che al primo caricamento reindirizza il browser al target, sul secondo carico restituisce un payload XSS. Un modo per farlo è controllare il referer sul lato server:

<?php
if($_SERVER['HTTP_REFERER'] == 'http://target.com/xss'){
   print "alert('xss')";
}else{
   header("location: http://target.com/xss")
}
?>

Quando viene caricata la pagina link , javascript da document.referer verrà carica alert ('xss') .

    
risposta data 15.09.2014 - 19:05
fonte

Leggi altre domande sui tag