il valore di request.getHeader ("Host") può essere simulato?

0

Supponiamo che ci sia del codice come

<a href="<%=request.getHeader("Host")%>/xxx/abc.do>SignIn</a>

Un utente malintenzionato può falsificare request.getHeader ("host") per indicare "SignIn" ancora per l'URL dell'attaccante, ad es. attacker.com/xxx/abc.do? Se sì, come? Se no, perché no?

    
posta p_upadhyay 21.12.2011 - 21:22
fonte

1 risposta

2

Non proprio.

request.getHeader () è una funzione che viene eseguita sul server e richiama le informazioni (in questo caso host) dall'intestazione della richiesta del client e inserisce la stringa nel formato html che sta creando. La linea di codice che hai fornito è solo una comodità (e una buona pratica di codifica) che fa in modo che lo sviluppatore non debba modificare il codice del server se sposta l'app da test.company.com a www.company.com.

Tuttavia, per il test delle penne, consiglierei di cercare le chiamate a request.getHeader () che effettuano una decisione di controllo degli accessi basata sul risultato. Ad esempio, se la pagina sensitive.company.com ha verificato che request.getHeader ("referer") equivalesse a internal.company.com prima di consentire il client, ciò sarebbe sfruttabile perché il client può inserire qualsiasi cosa desideri in quel campo.

EDIT: Aggiungerei i punti relativi alla risoluzione DNS e ai vhost che sono stati creati nella risposta alla tua altra domanda Is Request.getHeader ("host") vulnerabile? . Se l''host' era attacker.com, la richiesta sarebbe andata su attacker.com in primo luogo.

    
risposta data 21.12.2011 - 22:09
fonte

Leggi altre domande sui tag