¿Los servidores modernos son susceptibles de ataques de división HTTP?

1

Nota: sé cómo funciona la división HTTP.

Nota 2: No estoy trabajando en WebGoat. Estoy tratando de hacer esto por mi cuenta.

Estoy intentando imitar el ataque de división HTTP en mi máquina. Para eso escribí este código php:

<?php
header("Location: " . $_GET['page']);
?>

Y luego entro en la siguiente URL:

http://localhost/webgoat/httpsplitting.php?page=index%0aContent-Length:%200%0a%0aHTTP/1.1%20200%20OK%0aContent-Type:%20text/html%0aContent-Length:%2017%0a%0a<html>Hacked</html>

Pero también cuando intercepto la solicitud utilizando webscarab, veo que estos encabezados no están incluidos en la respuesta del servidor web.

Además, vi en Wirehark que la secuencia LF (es decir,% 0a) no se convierte a su formato ASCII y se usa como una cadena y no como un salto de línea.

Entonces, llegué a la deducción de que los servidores web modernos no son susceptibles a este ataque. ¿Estoy en lo correcto?

    
pregunta Rash 18.12.2013 - 06:57
fuente

3 respuestas

2

Esto no es un problema con su navegador, sino un problema con la función de encabezado de PHP que es inmune a los ataques de división de HTTP. Lo mismo ocurre con la llamada a la función set-cookie.

Puede leer más sobre esto aquí enlace

Un breve extracto:

 [...] Although response splitting is not specific to PHP, the PHP interpreter 
contains protection against the attack since version 4.4.2 and 5.1.2. [1]
    
respondido por el Chris Dale 18.12.2013 - 12:31
fuente
0

No parece un problema de navegador: si el servidor acepta una nueva línea de entrada y lo escupe directamente en un encabezado HTTP sin escapar, sería una vulnerabilidad del lado del servidor.

Este ataque particular de división de encabezado ahora se mitiga en el propio PHP. La función header() le dará un error si pasa una cadena con una nueva línea.

    
respondido por el bobince 18.12.2013 - 12:10
fuente
0

Los ataques de división HTTP se centran en el lado del servidor como consecuencia de un mal análisis de entrada y funciones vulnerables. Para un navegador es imposible adivinar cuando un encabezado es malo o no. Estos son enviados por el servidor.

Probablemente lea esto División de respuesta HTTP OWASP

  

La división de la respuesta HTTP ocurre cuando:   Los datos ingresan a una aplicación web a través de una fuente no confiable, con mayor frecuencia una solicitud HTTP.   Los datos se incluyen en un encabezado de respuesta HTTP enviado a un usuario web sin ser validado para caracteres maliciosos.

    
respondido por el Iñaki R. 18.12.2013 - 12:38
fuente

Lea otras preguntas en las etiquetas