Los ataques «Slow HTTP» en aplicaciones web se basan en que el protocolo HTTP, por diseño, requiere que las peticiones que le llegan sean completas antes de que puedan ser procesadas. Si una petición HTTP no es completa o si el ratio de transferencia es muy bajo el servidor mantiene sus recursos ocupados esperando a que lleguen el resto de datos. Si el servidor mantiene muchos recursos en uso podría producirse una denegación de servicio (DoS).

Estos tipos de ataque son fáciles de ejecutar debido a que una sola máquina es capaz de establecer miles de conexiones a un servidor y generar miles de peticiones HTTP sin terminar en un período muy corto de tiempo utilizando un ancho de banda mínimo.

Podemos dividirlos en cuatro tipos distintos según la técnica utilizada y lo bueno es que desde hace años podemos probarlos todos mediante la herramienta Open-Source SlowHTTPTest que podemos instalar fácilmente en nuestro Kali Linux y también en otras distros de Linux, OSX y en Windows con Cygwin. Además se puede descargar desde el repositorio de Github.

apt-get install slowhttptest

Veamos entonces estos cuatro tipos de técnicas/ataques y un ejemplo del uso de SlowHTTPTest para probarlos:

  • Slow Headers (Slowloris): consiste en enviar las cabeceras HTTP incompletas (sin el CRLF final que indica el final del header) de tal forma que el servidor no considera las sesiones establecidas y las deja abiertas afectando al número de conexiones máximas configuradas o maxclients.
  • Slow HTTP Post body (R-U-Dead-Yet): se envían peticiones POST con la cabecera HTTP completa e incluyendo un «Content-Length» con el tamaño en bytes del POST DATA a enviar. Luego se envían menos bytes que los indicados haciendo al servidor esperar sin rechazar la conexión.
  • Basado en Range (Apache killer): se crean numerosas peticiones superponiendo rangos de bytes en la cabecera (HTTP ranges) agotando los recursos de memoria y CPU del servidor.
  • Slow Read: en este caso se envían peticiones HTTP legítimas pero se ralentiza el proceso de lectura de la respuesta retrasando el envío de ACK (HTTP es TCP).

Fuente: Segu Info

Compartir