Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #99, МАРТ 2007 г.

Знакомимся с девушками

Леонид «R0id» Стройков

Хакер, номер #099, стр. 070


(r0id@mail.ru)

Взлом датинг-ресурса

Ты когда-нибудь задумывался над тем, какую роль играют датинг-ресурсы в нашей жизни? Многие из моих друзей познакомились со своими девушками/будущими женами в Сети. Ты можешь возразить, мол, все это ерунда, реал рулит и т.п. Само собой, с девушками рулит именно реал, но что мешает тебе купить билет на самолет и прилететь к своей сетевой знакомой? Тут уже все зависит от тебя и от твоей решительности. Единственный и, пожалуй, очень серьезный минус знакомств в Сети – возможность потери контактов. Встретить повторно одного и того же человека зачастую бывает невозможно, так как ники меняются с поразительной быстротой. Но что делать, если при каких-то обстоятельствах ты забыл контакты понравившейся девушки? Ответов может быть несколько, но для хакера он один.

Несостоявшееся знакомство

Одним из вечеров, когда работа и учеба одолели окончательно, я решил заглянуть на какой-нибудь датинг-ресурс. Среди наших ресурсов я ничего интересного не нашел, и мой выбор пал на раскрученный заокеанский сайт знакомств www.wemakeamatch.com. Недолго думая, я зарегился и зашел в чат. Неплохо владея английским, через полчаса я уже вовсю общался с девушкой под ником playboybunny, которая, судя по фотке, обладала весьма симпатичной внешностью =). Разговор становился все интереснее, как вдруг я услышал писк UPS'а, свидетельствующий о том, что «концерта не будет - кончилось электричество». В срочном порядке сохранив пару открытых сорцов, я вырубил комп, абсолютно забыв про чат. Когда я вспомнил про неоконченный разговор на датинг-сайте, еще долго материл электриков и собственную память. Девушка-то была, судя по всему, супер. Но что мне оставалось делать? На руках у меня был лишь ее ник. Мыло я взять не успел, а в анкете никакой толковой инфы не оказалось, так как все e-mail-адреса являлись скрытыми :(. Поразмыслив, я принял рисковое решение - во что бы то ни стало поломать датинг-ресурс и, получив доступ к базе, найти контакты девушки. Работа представлялась совсем не легкой, но любовь, как и красота, требует жертв.

Я снова зашел на сайт www.wemakeamatch.com, но прежде чем обследовать двиг, решил по старинке пробить датинг на www.domainsdb.net. Оказалось, что на данном IP находятся всего три домена:

1. getatext.com;

2. off-records.com;

3. wemakeamatch.com.

Вероятнее всего, сайт датинга располагался на дедике, что меня совсем не радовало. Кроме того, первые два домена отказывались ресолвиться. Этот факт не внушал мне оптимизма, так как вариант с вебом у меня оставался всего один - сайт самого датинга. Тем не менее, ковырять php-двиг вручную у меня не было никакого желания, к тому же шансы в данной ситуации были невелики. Судя по банерам, датинг являлся достаточно крупным и раскрученным ресурсом. Движок на нем стоял, скорее всего, самописный, а значит, на багтрак можно было не рассчитывать. Пройдя по линку www.wemakeamatch.com/admin, я нашел админку сайта. Увы, но все данные, передающиеся через формы, фильтровались, поэтому на любые мои манипуляции скрипт отрыгивал стандартную фразу «Invalid Username or Password!». Погуляв немного по датингу и не найдя ничего интересного, я все же приметил ссылочку с надписью «view more», располагающуюся под каждой фоткой, вывешенной в топе. Кликнув по одному из линков, я увидел увеличенную фотку с краткой анкетой, а сам урл выглядел так:

http://www.wemakeamatch.com/fullview.php?id=2670

В дополнение к значению параметра id моментально отправилась одинарная кавычка, после чего я нажал «Enter» и с удовольствием стал наблюдать ответ сервера:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home2/wemakeam/public_html/fullview.php on line 84

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home2/wemakeam/public_html/fullview.php on line 85

Налицо была SQL-инъекция. Однако страница с ошибкой моментально исчезла, редиректив меня на индекс сайта. Видимо, скрипт перенаправлял пользователя по адресу http://www.wemakeamatch.com/index.php, в случае неверного указания значения параметра id. Попробовав подобрать количество полей в таблице, я обнаружил, что конструкция ORDER BY отказывается работать. Я уже был готов к тому, что подбор полей затянется на неопределенный срок, но после нескольких попыток мои сомнения развеялись. Полей оказалось всего 19:

http://www.wemakeamatch.com/fullview.php?id=-1+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19+/*

Причем некоторыми из них можно было воспользоваться для вывода информации из базы на экран. Дело оставалось за малым - подобрать название таблицы юзеров ресурса, сбрутить имена полей в таблице и, собственно, раздобыть регистрационную информацию девушки под ником playboybunny :). С первыми двумя пунктами мне повезло. Несмотря на самописный движок, название таблицы с данными мемберов оказалось нехитрым - users:

http://www.wemakeamatch.com/fullview.php?id=-1+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19+from+users/*

С именами полей дело обстояло немного сложнее, но и их мне удалось подобрать. Так как стандартные user, password и email не прокатывали, я начал пробовать различные префиксы. Удачным оказался вариант с префиксом «user», то есть поля носили названия user_password и user_email. Только поле логина немного отличалось от остальных - username. В целом, я обладал уже достаточной информацией для составления ключевого (читай - рокового =)) запроса к базе. Заюзав concat для объединения выводимых данных в одном поле, я вбил кверю вида:

http://www.wemakeamatch.com/fullview.php?id=-1+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,concat(username,char(58),user_password,char(58),user_email),15,16,17,18,19+from+users+limit+1,1/*

И получил долгожданный ответ:

admin:f0c109786601f8690a8aabb29a8ef45c:admin@wemakeamatch.com

Вот тут, как ты догадываешься, меня сильно огорчил факт шифрования пароля md5-алгоритмом. Конечно, я бы мог поиграть с запросами и выудить мыльник своей подруги через инъекцию, но непреодолимая сила тянула меня в админку. Скопировав хэш пасса админа, я подключился к своему заокеанскому дедику, запустил брут и отправился спать.

Захват объекта

Проснувшись и едва поднявшись с кровати, я глянул на экран монитора и с радостью для себя обнаружил, что пасс был успешно сбручен:

f0c109786601f8690a8aabb29a8ef45c = btazco4k

Имея на руках админский аккаунт вида admin:btazco4k, я успешно залогинился по адресу www.wemakeamatch.com/admin. Администраторское меню было разделено на три раздела: «Reports», «Settings» и «Tools». Каждый из разделов содержал в себе несколько пунктов. В «Reports» находились всевозможные отчеты, начиная от оплаты мемберов и заканчивая хелпом, а «Settings» включал в себя настройки/конфиги ресурса. Но наибольший интерес представлял раздел «Tools», так как именно в нем находился подраздел «Member Administration», в который я не побрезговал сразу же заглянуть =). Как и ожидалось, внутри располагался лист с юзерами датинг-ресурса и их регистрационной инфой. Пробежавшись голодным хакерским взглядом по списку в поисках ника playboybunny, я вскоре наткнулся на нужную мне строку:

1172 playboybunny Tina playboybunny@letsmakeamatch.net

Число 1172 означало порядковый номер (id) мембера, playboybunny - ник, Tina - имя девушки, а playboybunny@letsmakeamatch.net - ее мыло :). Ура! Цель была достигнута, я таки раздобыл контакты незнакомки в справедливом бою. Но почему-то мне хотелось большего. Нет, не подумай: я не начал паковать чемоданы, дабы наведаться к девушке в гости =). С этим можно было повременить, так как, кроме всего прочего, я не имел ее домашнего адреса. Мое внимание резко переключилось на местную обитель зла aka дедик датинга. Залить веб-шелл оказалось несложно. В разделе «Settings -> Featured Sponsors» присутствовала удобная формочка для добавления «спонсоров» и заливки картинок. Формочки, как известно, имеют свойство не обладать фильтрацией, чем я и воспользовался, пихнув доверчивому скрипту свой веб-шелл =). Но вот дальше события развивались не столь стремительно, и добрый час я потратил на поиск директории, в которую был залит шелл. Были проверены различные диры наподобие /img, /images, /image и т.д. Но удача мне улыбнулась лишь после перехода по следующему адресу:

http://www.wemakeamatch.com/admin/sponsor/shell.php

В директории /sponsor меня уже дожидался мой шелл - shell.php :). Что же, пора было приступать к осмотру сервера. Первые сведения я получил через несколько секунд:

Linux host173.canaca.com 2.6.9-42.0.3.ELsmp #1 SMP Fri Oct 6 06:21:39 CDT 2006 i686 athlon i386 GNU/Linux(Linux host173.canaca.com 2.6.9-42.0.3.ELsmp #1 SMP Fri Oct 6 06:21:39 CDT 2006 i686 )

uid=32298(wemakeam) gid=32299(wemakeam) groups=32299(wemakeam)

Приятен был факт обладания правами текущего юзера - wemakeam, а не просто nobody или apache. Заглянув в диру /home2/wemakeam/www/, я обратил внимание на конфиг config.php, содержащий в себе MySQL-аккаунт:

$dbhost = "localhost" ;

$dbuser = "prohyip" ;

$dbpass = "scemo2k" ;

$db = "prohyip_net_-_asnforum" ;

Однако когда я попробовал приконнектиться к базе, меня попросили пройти лесом, предъявив весомый аргумент в виде неправильной пары логин/пароль. Вспомнив, что на ресурсе был форум, я проследовал в каталог форума /home2/wemakeam/www/forums/ и выдернул конфиг оттуда. Но и там оказался точно такой же аккаунт. Меня это несколько удивило, но когда я заглянул на сам форум, то все стало ясно - форум не пахал :). Тогда я открыл сорец бажного скрипта fullview.php и взял из него всего одну строку:

<? include ('includes/db.php');?>

Пройдя в каталог /home2/wemakeam/www/includes/ и прочитав файл db.php, я наконец-то получил то, что искал:

define("HOST", "localhost");

define("USER", "wemakeam_wemakea");

define("PASS", "v5c2n9");

define("DB", "wemakeam_wmam");

Буквально через минуту я уже дампил базу датинг-ресурса себе на винт =). Кстати, помимо таблицы users, содержащей более 800 записей, там находилась еще и таблица members с 1482 записями. Одним словом, все поставленные задачи были успешно выполнены, и я со спокойной душой пошел за пивом, на время забыв о девушке :).

Happy end

На следующий день я написал письмо девахе с загадочным ником playboybunny и красивым именем Tina, объяснив ситуацию с перебоями в электроснабжении моего района (привет электрикам :). Ответ не заставил себя долго ждать, и через пару часов я располагал ее домашним адресом и номером телефона. Теперь можно было действительно начинать паковать чемоданы, тем более что девушка обещала мне романтический ужин и блаженную ночь любви =).

Кому нужны датинг-ресурсы?

На самом деле, зачастую датинг-ресурсы взламывают отнюдь не из праздного любопытства. Дело в том, что раскрученные датинги имеют, как правило, крупные спам-базы. Спамеры готовы выкладывать за такие листы весьма приличные суммы. Кроме того, подобной «продукцией» интересуются и различные сетевые брачные агенства, работающие с иностранцами. А если сайт отличается высокой посещаемостью, то не исключен и вариант с ифреймом под загрузку трояна =).

Warning

Внимание! Информация представлена исключительно с целью ознакомления! Ни автор, ни редакция за твои действия ответственности не несут!

Info

Датинг-ресурсы прочно вошли в нашу повседневную жизнь. Тем не менее, не зацикливайся на virtual love, посмотри, сколько красивых девушек за твоим окном. Реальным окном =).

DVD

На диске ты найдешь удобный MySQL-клиент, написанный на php.

Содержание