Закрыть
Все сервисы
Главная
Лента заметок
Теги
Группы
Рейтинги
ДжедаевичЛента заметок группы: ПОХВАСТАТЬСЯ !

Взлом БИГМИРА и ICQ-БИГМИР

20 февраля´09 17:53 Просмотров: 5822 Комментариев: 3




СТАТЬЯ о том, КАК ВЗЛОМАЛИ БигМир

и украли пароли к аськам.


Поскольку большая часть текста понятна лишь программистам,

лучше читайте выделенное красным, в конце статьи.

Читайте - и ДУМАЙТЕ








"Здравствуй, мой юный друг! Сегодня на нашем операционном столе лежит и подрагивает всеми конечностями очень известный пациент - украинский портал bigmir.net. Ты спросишь, что же в нем такого особенного? Отвечу. Бигмир - локализованный партнер icq.com, через который проходит привязка номерков аськи к мылу, регистрация новых уинов и другие вкусности, связанные с аськой. Стало интереснее? Тогда читай дальше :).



Нет ничего невозможного!




Я принялся изучать локализованных партнеров Icq.Com в различных странах: nana.co.il, rambler.ru, mynet.com, abv.bg, zoznam.sk, netvigator.com, prosieben.de, atlas.cz и bigmir.net. Для этого я скачал крякнутый сканер уязвимостей XSpider 7.5 (ссылку приводить не буду, поскольку это незаконно, но ты можешь поискать ее сам на различных форумах, посвященных хаку) и запустил его на своем компе с указанными выше доменами для их проверки. Спустя час прога выдала мне первые результаты :). Жертва была найдена - украинский портал bigmir.net с PR=8 по Гуглу (в России сайтов с таким пиаром всего три).



Сама ядовитая ссылка выглядела так:





Очень похоже на локальный инклуд с null-байтом. Но, как позже выяснилось, это было далеко не так. Этот баг позволял лишь просматривать файлы в системе, а до выполнения php-кода дело не дошло. Код в исходнике главной страницы Бигмира выглядит так:

$u = @$_GET['u'];

...

@readfile($staticDir .'rating'.$t.$u.'.html');

Просмотрев некоторые системные файлы (например, www.bigmir.net/?u=../../../../../../../../../../usr/local/etc/apache22/extra/httpd-vhosts.conf%00), я решил пока отложить эту уязвимость и идти дальше.



Хорошие соседи




Как видишь, даже в таком серьезном портале уже на главной странице обнаружился очень серьезный баг. Но с него ничего хорошего поднять было нельзя. Поэтому следующим моим шагом стало изучение сайтов, расположенных на том же сервере, что и bigmir.net. Я зашел на всем известный сервис IP-lookup вбил туда наш любимый Бигмир и стал смотреть результаты.



На самом IP-адресе Бигмира других сайтов не было, а вот на его же NS я увидел пару сайтиков: и ссылки на которые были на главной странице нашего портала. Немного поизучав новых пациентов, я наткнулся на их форумы ( и ). Наметанный глаз сразу узнал скрипты борды. И там, и там стоял Phorum. Но, чтобы начать какие-либо хакерские действия, необходимо было узнать версию форума.



Пройдя по ссылке я обнаружил надпись: «Version 5.1.16a». Для нее, конечно, были известные баги, но паблик-сплоитов под них не существует, а ковыряться с blind SQL-injection не позволяла лень. Смотри сам, небольшой PoC-сплоит (работающий, конечно, после логина на форум и подстановки существующих id форума и темы):

Далее я совершил те же самые действия и со вторым форумом, но админки по этому адресу не было.



В итоге, ковыряясь с этими форумами, я нашел только одну интересную особенность: если пройти по ссылке то в окне браузера можно наблюдать следующую забавную картину:

Warning: main(./docs) [function.main]: failed to open stream: Invalid argument in /storage/web/htdocs/ricardo/pages/forum.tpl on line 47

Fatal error: main() [function.require]: Failed opening required './docs' (include_path='.:/usr/local/share/pear') in /storage/web/htdocs/ricardo/pages/forum.tpl on line 47

Но, опять же это все была ерунда, нужен был более серьезный баг.



Истина где-то рядом




Выбрав в качестве своей основной жертвы я продолжил хождение по этому ресурсу и через несколько минут наткнулся на на главной странице которого в самом низу было написано: «Блог Korrespondent.net работает на WordPress». Увидев эту надпись, я обрадовался, поскольку WordPress - крайне дырявый движок, следовало только узнать его версию, для чего я прошел по ссылке



На открывшейся паге гордо красовалась вторая обрадовавшая меня за последние несколько минут надпись: «WordPress 1.5» :). Я ринулся на вбил там в поиск название движка и увидел кучу очень неплохих сплоитов, из которых выбрал Wordpress <= 1.5.1.3 Remote Code Execution eXploit (metasploit), так как он был последним для ветки 1.5, запустил его и... ничего не получил :(. Огорчению моему не было предела. Значит, на исследуемом сайте стоял WordPress 1.5.2, для которого не было паблик-сплоитов.



Эта неудача вынудила меня забить на несколько дней на взлом Бигмира.



WordPress под ударом




Естественно, этим история не заканчивается :). Погуляв пару дней на свежем воздухе, я подумал, а почему бы самому не поискать баги в движке блога, чем немедленно и занялся. Зашел на официальный сайт движка далее - в архив раздела Download и скачал оттуда последнюю версию из первой ветки - 1.5.2. Установил блог на локалхосте и принялся за раскопки :). На поиск бага ушло несколько часов и пара литров пива, я копал каждый файл, мучал параметры, листал исходники... И в итоге мои старания были вознаграждены!



Банальная скул-инъекция присутствовала в файле ./wp-admin/user-edit.php в 69-й строке:

$result = $wpdb->query("UPDATE $wpdb->users SET user_login = '$new_user_login', user_firstname = '$new_firstname', $updatepassword user_lastname='$new_lastname', user_nickname='$new_nickname', user_icq='$new_icq', user_email='$new_email', user_url='$new_url', user_aim='$new_aim', user_msn='$new_msn', user_yim='$new_yim', user_idmode='$new_idmode', user_description = '$new_description', user_nicename = '$new_nicename' WHERE ID = $user_id");



Итак (трубят фанфары) ... У нас на операционном столе - новый приватный баг WordPress, найденный твоим покорным слугой :). Для его использования необходима регистрация на уязвимом блоге. Вообще он находится в файле wp-register.php, но на Korrespondent.net была сделана общая регистрация для всех сервисов сайта, поэтому, зарегавшись и залогинившись на сайте, я прошел по ссылке и сохранил страничку себе на винт. Далее, открыв ее в блокноте, я нашел следующий участок html-кода:



Заменил его. Затем нашел hidden-поле с user_id и заменил его:

После всех перечисленных действий я сохранил заряженную страницу и открыл ее в браузере.



Теперь необходимо сделать небольшое пояснение, касающееся найденной уязвимости: из SQL-запроса видно, что при update пользовательского профиля вообще не проверяется параметр $user_id, то есть таким образом мы можем обновить профиль любого юзера, но прежде всего нам необходим админ. Как просто и быстро поставить админу свой пароль? А вот как.

В нашей ядовитой страничке вписываем в поля с логином и паролем любые логин и пароль, например tester/tester, а в бывшее hidden-поле вбиваем: «-99 or user_level=10/*» (естественно, без кавычек).



В итоге, наш скул-запрос получается следующим:

UPDATE wp_users SET user_login = 'tester', user_firstname = '',user_pass=MD5('tester'), user_lastname='', user_nickname='', user_icq='', user_email='', user_url='', user_aim='', user_msn='', user_yim='', user_idmode='', user_description = '', user_nicename = '' WHERE ID =-99 or user_level=10/*



Так как юзера с ID=-99 однозначно не существует в базе данных, обновятся данные лишь юзера с user_level=10, то есть данные админа :).



Ленивые админы




Став админом blog.korrespondent.net, я задумался над получением шелла на сервере. Скажу по секрету: у меня есть еще один обнаруженный мной приватный баг, позволяющий легко и безболезненно получать шелл из админок WordPress версий 1.5-2.1. Но тебе хватит и предыдущего привата :). Эта уязвимость все равно мне не понадобилась, поскольку, зайдя в «Редактор шаблонов», я увидел, что все php-файлы в template-директории открыты на запись. Теперь необходимо было тайно встроить свой шелл в один из уязвимых файлов. Я быстро набросал следующий php-код:



И вписал его в template шапки блога. Таким образом, по адресу можно было видеть обычный блог, а на - красивый и удобный шелл :).



А дальше я начал изучение сервера bigmir.net. В первую очередь меня интересовала база данных Бигмира . Отправившись на поиске параметров подключения к базе, я нашел файл /storage/web/htdocs/bigmir/bigmir2/config.php, в котором находились следующие строки:

// production

define('BM_DB_HOST', 'cbd2.sm');

define('BM_DB_USER', 'bigmir');

define('BM_DB_PASS', 'NacDagegWukecBi');



Далее я закачал на сервер скрипт управления БД от RusH Security Team ( на официальном сайте скрипт недоступен) и поставил его по адресу Залогинившись с полученными данными, я минуту наблюдал долгожданную картину - все таблицы Бигмира были передо мной :). Немного походив по ним, я нашел таблицу с юзерами в bm_global.user. Полтора миллиона регистраций, все пароли к аськам в открытом виде! Ну не чудо ли?



Что дальше?




Продав все пяти-, шести- и семизначные номера из базы Бигмира с помощью друзей, я задумался, а что же делать дальше? Перспективы открывались огромные: во-первых, в моих руках был клиентский API партнеров icq.com (наблюдать его ты также можешь на скриншоте в журнале); во-вторых, мой шелл на протяжении двух недель никто не палил; а в-третьих, я нашел таблицу с админами Бигмира и у меня был доступ к (сейчас доступ к админке возможен лишь с определенных IP-адресов).



Решив пойти по пути наименьшего сопротивления, я стал изучать регу номеров. В результате в файле /storage/web/htdocs/bigmir/include/icq_ips_class.php я увидел следующую функцию:



function register($password, $email, $nickName, $firstName = false, $lastName = false, $birthDay = false, $sex = false, $country = false, $city = false, $state = false)

{

...

}



И стал ваять автореггер ICQ-уинов. Создал php-гейт на Бигмире, где в цикле запустил указанную выше функцию, затем на том же php написал клиент к этому гейту и с помощью программы php2exe, которую ты можешь часто видеть на дисках, прилагаемых к журналу, перевел его в экзешник. Процитирую одного из первых покупателей этой программы (kaleostra): «Купил - доволен; итак, тесты: 10 мин, 4100 номеров с семи копий, 410 в минуту с семи копий, 59 номеров в минуту с копии! Ресурсы не жрет вообще».



Как видишь, результаты ошеломляющие :). Но этого было, как обычно, мало. За несколько часов товарищ Cash написал GUI-интерфейс на Delphi с поддержкой потоков, и получилась довольно симпатичная прога, которую ты можешь наблюдать на скриншоте. За одну ночь 4 человека зарегали более полумиллиона уинов, в результате Бигмир повис надолго. Затем была отключена регистрация номеров, и на сервере украинского портала стали проводиться какие-то технические работы.



Через день все мои бэкдор-шеллы удалили, был установлен WordPress последней версии и изменены пароли всех админов Бигмира. Но меня это ничуть не расстроило :). Покопавшись в слитом движке Бигмира, я нашел скул-инъекцию, с помощью которой снова получил доступ к базе данных :). Правда, через несколько часов его перекрыли.



В итоге, было продано очень много элитнейших уинов, зарегистрировано очень много девяток для спама (у меня самого до сих пор лежит около 250k, если будут нужны - обращайся), и, что самое главное, был подорван авторитет не только локализованного партнера icq.com но и всего AOL'а.



На этом следует остановиться. Как видишь, даже очень крупные проекты не могут устоять перед хакерами. Стоит задуматься, какой из локализованных партнеров будет следующей жертвой безжалостного ICQ хакерского андеграунда? ;) "










Группа: ПОХВАСТАТЬСЯ !
Мне нравится! Понравилось: 2
Пожаловаться
Комментариев (3)
Отсортировать по дате Вниз
Лорна*    04.03.2009, 09:54
Оценка:  0
Лорна*
ну и нафига это было вобще делать?
Джедаевич    04.03.2009, 09:54
Оценка:  0
Джедаевич
Как нафига. Номера асек денег стоят, между прочим.

А этим товарищам - видимо, ради собственного удовольствия, чтобы обойти известные границы.
SKV@    21.02.2009, 08:57
Оценка:  0
SKV@
фигасе :09:
Реклама
Реклама