¿Es vulnerable Request.getHeader ("host")?

7

Si el siguiente es el fragmento de código, ¿cuáles serían sus sugerencias?

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

¿Es este un claro ejemplo de XSS? En caso afirmativo, ¿cuáles son los escenarios de ataque que puede usar un atacante?

    
pregunta p_upadhyay 20.12.2011 - 12:16
fuente

1 respuesta

8

Es una vulnerabilidad XSS, pero es bastante difícil de explotar: tome por ejemplo la siguiente URL:

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

Esta URL llevará una carga útil XSS en el parámetro Host cuando se navegue a, pero:

  1. DNS tendría que resolver este extraño dominio a la IP con una aplicación vulnerable (por lo tanto, a menos que el DNS sea bastante indulgente, el atacante requeriría un envenenamiento de DNS)
  2. El navegador tendría que omitir la codificación del nombre de host. Por lo general, el nombre de host está codificado en porcentaje por el navegador (por lo que <script> se convierte en %3Cscript%3E ). Por supuesto, podría falsificar la solicitud fuera del navegador.
  3. El servidor de destino tendría que procesar la solicitud en el contexto del sitio web vulnerable, lo que no es tan simple. Por ejemplo, si esta aplicación se instala como VirtualHost en Apache, este encabezado Host no coincidirá con ningún VirtualHost y se procesará con un respaldo o el primer VirtualHost .

Sería mucho más peligroso si este XSS se almacenara y no se reflejara, porque entonces podría omitir los requisitos de codificación (1) DNS y (2). Puede simplemente plantar la carga útil enviando una solicitud HTTP manual fuera del navegador. Esta carga útil sería entonces visible para los visitantes "estándar" basados en navegador del sitio vulnerable.

Entonces, como conclusión, se trata de una vulnerabilidad XSS, pero con una probabilidad de explotación baja. Aún así, la aplicación debería solucionarlo evitando que se muestre el encabezado del Host.

    
respondido por el Krzysztof Kotowicz 20.12.2011 - 13:06
fuente

Lea otras preguntas en las etiquetas