È pericoloso reindirizzare all'URL di riferimento?

3

È un problema quando gli URL in un'applicazione web reindirizzano all'URL specificato nell'intestazione Referer ?

Non è un reindirizzamento aperto come nessuno degli /whatever?url=evil.com esempi che ho visto, che possono essere sfruttati dagli utenti clicca su un link alla domanda legittima (o almeno non così semplice). Questa risposta sembra indicare (verso la fine) che i referenti non possono essere falsificati arbitrariamente - almeno non senza l'aiuto dell'utente , nel qual caso il reindirizzamento non è probabilmente un problema.

MSA-15-0019 ( post sul blog associato ) sembra essere quello che sto chiedendo riguardo , ma non è spiegato perché è un problema. Per quanto comprendo, è più probabile che l'aggiunta dell'URL Referer al pulsante mostrato nella pagina abbia generato una potenziale vulnerabilità XSS riflessa.

Si noti che non si tratta di possibili problemi di CSRF in qualsiasi URL che non mostra una risposta, ma invece è probabile che agisca in qualche modo sull'input; ma in particolare sull'intestazione Location reindirizza all'URL Referer . che è un problema? Se sì, come / perché?

Se è importante, l'applicazione è scritta in Java e il codice che mi interessa è sostanzialmente equivalente a myHttpServletResponse.sendRedirect(myHttpServletRequest.getHeader("Referer")) . Supponendo che nulla di interessante si verifichi sul server come risultato di questa richiesta, come può essere un problema?

    
posta mwl 10.08.2017 - 03:18
fonte

3 risposte

3

Stai creando una vulnerabilità di reindirizzamento aperta ma nessun difetto XSS. Tuttavia, non riesco a pensare a un caso d'uso legittimo per emettere un reindirizzamento alla pagina di riferimento in primo luogo. Per lo meno rischi di creare un ciclo di reindirizzamento.

Si noti che in altri contesti può essere pericoloso per consentire gli URL controllati dall'utente, specialmente perché un utente malintenzionato potrebbe trarre vantaggio da pseudo schemi come data: e javascript: per raggiungere XSS. Ad esempio, la stampa di <a href="[referrer]">Click me</a> è vulnerabile anche se sfuggi virgolette e parentesi.

Ma non rischi che uno schema pseudo finisca nell'intestazione Referer perché i browser non li inviano mai. Inoltre, un'intestazione come Location: javascript:alert(1) è considerata non valida e non ha alcun effetto su alcun browser principale.

Anche MDN suggerisce questo comportamento ma è meno dettagliato:

A Referer header is not sent by browsers if:

  • the referring resource is a local "file" or "data" URI,

  • an unsecured HTTP request is used and the referring page was received with a secure protocol (HTTPS).

(Source)

    
risposta data 10.08.2017 - 04:51
fonte
0

Le intestazioni di riferimento Http possono essere falsificate. Mi hai chiesto se non fosse sicuro, ma poi hai escluso uno dei principali vulns che lo renderebbe insicuro quindi non sono esattamente chiaro su ciò che vorresti sapere, ma dalla mia comprensione la risposta a breve termine alla tua domanda è sì.Questo link è anche correlato alla tua risposta, anche se non sono sicuro di come l'app venga codificata in figure java nell'equazione quando la si confronta con un'applicazione web link

    
risposta data 10.08.2017 - 03:43
fonte
0

L'unica vulnerabilità sarà un reindirizzamento auto-aperto, che ha un impatto davvero basso.

Hai ragione non puoi falsificare un referer con javascript o Ajax, il browser sovrascriverà la modifica. Quindi non è possibile aprire reindirizzare una vittima su un altro sito web.

    
risposta data 10.08.2017 - 04:22
fonte

Leggi altre domande sui tag