¿se puede falsificar el valor de request.getHeader ("Host")?

0

Supongamos que si hay algún código como

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

¿Puede un atacante falsificar request.getHeader ("host") para apuntar el enlace 'Iniciar sesión' a la URL del atacante, por ejemplo? attacker.com/xxx/abc.do? Si es así, ¿cómo? Si no, ¿por qué no?

    
pregunta p_upadhyay 21.12.2011 - 21:22
fuente

1 respuesta

2

En realidad no.

request.getHeader () es una función que se ejecuta en el servidor y extrae información (en este caso, el host) del encabezado de solicitud del cliente y coloca la cadena en el html que está diseñando. La línea de código que ha proporcionado es solo una conveniencia (y una buena práctica de codificación) que hace que el desarrollador no tenga que cambiar el código del servidor si mueve la aplicación de, por ejemplo, test.company.com a www.company.com.

Sin embargo, para las pruebas de lápiz, le recomendaría que busque llamadas a request.getHeader () que toman una decisión de control de acceso basada en el resultado. Por ejemplo, si la página sensitive.company.com verificaba que request.getHeader ("referer") era igual a internal.company.com antes de permitirle al cliente, esto sería explotable porque el cliente puede colocar lo que quiera en ese campo.

EDITAR: Me gustaría agregar los puntos sobre la resolución del DNS y los vhosts que se hacen en la respuesta a su otra pregunta Es ¿Request.getHeader ("host") vulnerable? . Si el 'host' fuera attacker.com, la solicitud se habría dirigido a attacker.com en primer lugar.

    
respondido por el Mike S 21.12.2011 - 22:09
fuente

Lea otras preguntas en las etiquetas