División de respuesta HTTP

1

¿Es esto aparte de un ataque de división de respuesta HTTP? A continuación, se incluye un código que se coloca en un navegador web después de borrar la url mientras se encuentra en el sitio web

javascript: var xhr = new XMLHttpRequest(); xhr.open( "GET" , "google.com", false);
xhr.send(); document.write(xhr.getAllResponseHeaders());

y la salida de este código se parecerá a algo como esto

Date: Fri, 18 Jan 2013 10:40:10 GMT Content-Encoding: gzip Transfer-Encoding: chunked 
Connection: close Server: Apache/2.2.3 (Red Hat) Vary: Cookie,Accept-Language,
Accept-EncodingContent-Language: en-us Content-Type: text/html; charset=utf-8

Si usa más AJAX y JavaScript y configura el encabezado

setRequestHeader(header,value)

¿Se trata de un riesgo de seguridad para todos los navegadores en todas las aplicaciones web?

    
pregunta noob1992 18.01.2013 - 11:44
fuente

2 respuestas

2

Los ataques de división de la respuesta HTTP funcionan cuando los datos del usuario (incluidas las nuevas líneas) se pueden insertar en los encabezados HTTP.

Por ejemplo, tomemos esta respuesta:

 HTTP/1.1 200 OK
 Date: Mon, 23 May 2005 22:38:34 GMT
 Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
 Last-Modified: Wed, 09 Jan 2013 23:11:55 GMT
 Accept-Ranges:  none
 Content-Length: 1234
 Connection: close
 Content-Type: text/html; charset=UTF-8
 Cookie: test=123&username=Polynomial

 <html>
 ...

Ahora supongamos que puedo cambiar mi nombre de usuario arbitrariamente e incluir CRLF (nuevas líneas) en el campo. Entonces podría inyectar mi propio contenido en la página.

Por ejemplo, podría establecer mi nombre de usuario en Polynomial\r\n\r\n<script>alert(document.cookie)</script> , lo que daría como resultado la siguiente respuesta HTTP:

 HTTP/1.1 200 OK
 Date: Mon, 23 May 2005 22:38:34 GMT
 Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
 Last-Modified: Wed, 09 Jan 2013 23:11:55 GMT
 Accept-Ranges:  none
 Content-Length: 1234
 Connection: close
 Content-Type: text/html; charset=UTF-8
 Cookie: test=123&username=Polynomial

 <script>alert(document.cookie)</script>
 <html>
 ...

Como puede ver, el JavaScript se inyectó en la página. Esta es una forma de inyección XSS / DOM a través del ataque de división.

La inclusión de los datos del usuario en una solicitud no es tan mala, ya que el servidor debería tratar las solicitudes de los usuarios como no fiables de todos modos. Como tal, las solicitudes AJAX no deberían ser un problema. Esto se convierte en un problema aún menor si se considera el hecho de que la mayoría de los navegadores principales han deshabilitado o limitado el controlador javascript: en la barra de URL, con el fin de limitar el potencial de ataques.

    
respondido por el Polynomial 18.01.2013 - 13:42
fuente
0

La escritura manual de JavaScript en la barra de ubicación del navegador utilizando el controlador de protocolo javascript: ejecutará ese JavaScript en el contexto del sitio web cargado en la pestaña actual.

No hay ninguna característica que permita a un atacante colocar automáticamente JavaScript en la barra de ubicación y ejecutarlo. Ha habido gusanos que le piden al usuario que copie JavaScript malicioso y lo pegue en la barra de direcciones.

    
respondido por el Cristian Dobre 18.01.2013 - 12:31
fuente

Lea otras preguntas en las etiquetas