È Request.getHeader ("host") vulnerabile?

7

Se il seguente è lo snippet di codice, quali sarebbero i tuoi suggerimenti?

<script type="text/javascript" src="<%=request.getHeader("Host")%>/XXX/xxx.js"></script>    

Questo è un chiaro esempio di XSS? In caso affermativo, quali sono gli scenari di attacco che possono essere utilizzati da un utente malintenzionato?

    
posta p_upadhyay 20.12.2011 - 12:16
fonte

1 risposta

8

È una vulnerabilità XSS, ma è piuttosto difficile da sfruttare: prendi ad esempio il seguente URL:

http://anything."><script>xss</script>.example.com/aa/bb

Questo URL trasporterà un carico utile XSS nel parametro Host quando è navigato verso, ma:

  1. DNS dovrebbe risolvere questo strano dominio verso l'IP con l'applicazione vulnerabile (quindi, a meno che il DNS non sia un aggressore abbastanza indulgente richiederebbe l'avvelenamento del DNS)
  2. Il browser dovrebbe saltare la codifica dell'hostname - in genere il nome host è codificato in percentuale dal browser (quindi <script> diventa %3Cscript%3E ). Ovviamente potresti falsificare la richiesta al di fuori del browser.
  3. Il server di destinazione dovrebbe elaborare la richiesta nel contesto del sito Web vulnerabile, che non è così semplice. Ad esempio: se questa applicazione è installata come VirtualHost in Apache, questa intestazione Host non corrisponderà a nessun VirtualHost e verrà elaborata da un fallback o dal primo VirtualHost .

Sarebbe molto più pericoloso se questo XSS fosse memorizzato e non riflesso, perché allora potreste saltare i (1) requisiti di codifica DNS e (2). Si potrebbe semplicemente piantare il carico utile inviando una richiesta HTTP manuale al di fuori del browser. Questo carico utile sarebbe quindi visibile per i visitatori "standard" basati su browser del sito vulnerabile.

Quindi, in conclusione, si tratta di una vulnerabilità XSS, ma con bassa probabilità di sfruttamento. Tuttavia, l'applicazione dovrebbe risolverlo eseguendo l'escape dell'intestazione Host visualizzata.

    
risposta data 20.12.2011 - 13:06
fonte

Leggi altre domande sui tag