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 (apt-get install slowhttptest) y también en otras distros de Linux, OSX y en Windows con Cygwin.
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).
Fuentes:
- Identifying Slow HTTP Attack Vulnerabilities on Web Applications
- Slow DOS Attack: Why It Is Dangerous and How to Detect Using a SIEM
- Testing Web Servers for Slow HTTP Attacks
- Slow Read: nuevo mecanismo DoS de servidores web
- Slow HTTP POST vulnerability
- Are you ready for slow reading?
- Slow DoS on the Rise
- How to Protect Against Slow HTTP Attacks
- DoS website using slowhttptest in Kali Linux – slowloris, slow HTTP POST and slow Read attack in one tool
- New Open-Source Tool for Slow HTTP DoS Attack Vulnerabilities
- Slowhttptest - Application Layer DoS attack simulator
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 (apt-get install slowhttptest) y también en otras distros de Linux, OSX y en Windows con Cygwin.
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.
slowhttptest -c 1000 -H -g -o my_header_stats -i 10 -r 200 -t GET -u https://myseceureserver/resources/index.html -x 24 -p 3
- 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.
slowhttptest -c 1000 -B -g -o my_body_stats -i 110 -r 200 -s 8192 -t FAKEVERB -u https://myseceureserver/resources/loginform.html -x 10 -p 3
- 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.
slowhttptest -R -u http://host.example.com/ -t HEAD -c 1000 -a 10 -b 3000 -r 500
- 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).
slowhttptest -c 1000 -X -g -o slow_read_stats -r 200 -w 512 -y 1024 -n 5 -z 32 -k 3 -u https://myseceureserver/resources/index.html -p 3
Fuentes:
- Identifying Slow HTTP Attack Vulnerabilities on Web Applications
- Slow DOS Attack: Why It Is Dangerous and How to Detect Using a SIEM
- Testing Web Servers for Slow HTTP Attacks
- Slow Read: nuevo mecanismo DoS de servidores web
- Slow HTTP POST vulnerability
- Are you ready for slow reading?
- Slow DoS on the Rise
- How to Protect Against Slow HTTP Attacks
- DoS website using slowhttptest in Kali Linux – slowloris, slow HTTP POST and slow Read attack in one tool
- New Open-Source Tool for Slow HTTP DoS Attack Vulnerabilities
- Slowhttptest - Application Layer DoS attack simulator